{
"blocks": {
"button_id": {
"args": [],
"category": "buttons",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.button?.id)",
"shape": "reporter",
"text": "clicked button id"
},
"button_respond": {
"args": [
{
"default": "Thanks!",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "buttons",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.button?.respond({ content: __bb.toStr({TEXT}) });",
"shape": "stack",
"text": "respond to the button with %1"
},
"button_respond_titled": {
"args": [
{
"default": "Result",
"name": "TITLE",
"options": [],
"type": "string"
},
{
"default": "Thanks!",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "buttons",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.button?.respond({ title: __bb.toStr({TITLE}), content: __bb.toStr({TEXT}) });",
"shape": "stack",
"text": "respond with title %1 and text %2"
},
"button_user": {
"args": [],
"category": "buttons",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.button?.user?.username)",
"shape": "reporter",
"text": "who clicked"
},
"control_forever": {
"args": [
{
"default": "",
"name": "SUBSTACK",
"options": [],
"type": "substack"
}
],
"category": "control",
"event": "",
"guard": "",
"is_expression": false,
"js": "while (true) {\n{SUBSTACK}\n await __bb.wait(0);\n}",
"shape": "c",
"text": "forever %1"
},
"control_if": {
"args": [
{
"default": "",
"name": "COND",
"options": [],
"type": "boolean"
},
{
"default": "",
"name": "SUBSTACK",
"options": [],
"type": "substack"
}
],
"category": "control",
"event": "",
"guard": "",
"is_expression": false,
"js": "if ({COND}) {\n{SUBSTACK}\n}",
"shape": "c",
"text": "if %1 then %2"
},
"control_if_else": {
"args": [
{
"default": "",
"name": "COND",
"options": [],
"type": "boolean"
},
{
"default": "",
"name": "SUBSTACK",
"options": [],
"type": "substack"
},
{
"default": "",
"name": "SUBSTACK2",
"options": [],
"type": "substack"
}
],
"category": "control",
"event": "",
"guard": "",
"is_expression": false,
"js": "if ({COND}) {\n{SUBSTACK}\n} else {\n{SUBSTACK2}\n}",
"shape": "e",
"text": "if %1 then %2 else %3"
},
"control_repeat": {
"args": [
{
"default": "10",
"name": "TIMES",
"options": [],
"type": "number"
},
{
"default": "",
"name": "SUBSTACK",
"options": [],
"type": "substack"
}
],
"category": "control",
"event": "",
"guard": "",
"is_expression": false,
"js": "for (let __i = 0, __n = __bb.toNum({TIMES}); __i < __n; __i++) {\n{SUBSTACK}\n await __bb.wait(0);\n}",
"shape": "c",
"text": "repeat %1 %2"
},
"control_repeat_until": {
"args": [
{
"default": "",
"name": "COND",
"options": [],
"type": "boolean"
},
{
"default": "",
"name": "SUBSTACK",
"options": [],
"type": "substack"
}
],
"category": "control",
"event": "",
"guard": "",
"is_expression": false,
"js": "while (!({COND})) {\n{SUBSTACK}\n await __bb.wait(0);\n}",
"shape": "c",
"text": "repeat until %1 %2"
},
"control_stop": {
"args": [
{
"default": "this script",
"name": "WHAT",
"options": [
"this script",
"all"
],
"type": "dropdown"
}
],
"category": "control",
"event": "",
"guard": "",
"is_expression": false,
"js": "return;",
"shape": "cap",
"text": "stop %1"
},
"control_wait": {
"args": [
{
"default": "1",
"name": "SECS",
"options": [],
"type": "number"
}
],
"category": "control",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __bb.wait({SECS});",
"shape": "stack",
"text": "wait %1 seconds"
},
"control_wait_until": {
"args": [
{
"default": "",
"name": "COND",
"options": [],
"type": "boolean"
}
],
"category": "control",
"event": "",
"guard": "",
"is_expression": false,
"js": "while (!({COND})) { await __bb.wait(0.1); }",
"shape": "stack",
"text": "wait until %1"
},
"data_addtolist": {
"args": [
{
"default": "thing",
"name": "ITEM",
"options": [],
"type": "string"
},
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": false,
"js": "{LIST}.push({ITEM});",
"shape": "stack",
"text": "add %1 to %2"
},
"data_changevariableby": {
"args": [
{
"default": "my variable",
"name": "VARIABLE",
"options": [],
"type": "variable"
},
{
"default": "1",
"name": "VALUE",
"options": [],
"type": "number"
}
],
"category": "variables",
"event": "",
"guard": "",
"is_expression": false,
"js": "{VARIABLE} = __bb.toNum({VARIABLE}) + __bb.toNum({VALUE});",
"shape": "stack",
"text": "change %1 by %2"
},
"data_deletealloflist": {
"args": [
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": false,
"js": "{LIST}.length = 0;",
"shape": "stack",
"text": "delete all of %1"
},
"data_deleteoflist": {
"args": [
{
"default": "1",
"name": "INDEX",
"options": [],
"type": "number"
},
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": false,
"js": "__bb.listDelete({LIST}, {INDEX});",
"shape": "stack",
"text": "delete %1 of %2"
},
"data_insertatlist": {
"args": [
{
"default": "thing",
"name": "ITEM",
"options": [],
"type": "string"
},
{
"default": "1",
"name": "INDEX",
"options": [],
"type": "number"
},
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": false,
"js": "__bb.listInsert({LIST}, {INDEX}, {ITEM});",
"shape": "stack",
"text": "insert %1 at %2 of %3"
},
"data_itemnumoflist": {
"args": [
{
"default": "thing",
"name": "ITEM",
"options": [],
"type": "string"
},
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.listIndexOf({LIST}, {ITEM})",
"shape": "reporter",
"text": "item # of %1 in %2"
},
"data_itemoflist": {
"args": [
{
"default": "1",
"name": "INDEX",
"options": [],
"type": "number"
},
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.listGet({LIST}, {INDEX})",
"shape": "reporter",
"text": "item %1 of %2"
},
"data_lengthoflist": {
"args": [
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": true,
"js": "{LIST}.length",
"shape": "reporter",
"text": "length of %1"
},
"data_listcontainsitem": {
"args": [
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
},
{
"default": "thing",
"name": "ITEM",
"options": [],
"type": "string"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.listContains({LIST}, {ITEM})",
"shape": "boolean",
"text": "%1 contains %2 ?"
},
"data_listcontents": {
"args": [
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": true,
"js": "{LIST}.join(' ')",
"shape": "reporter",
"text": "%1"
},
"data_replaceitemoflist": {
"args": [
{
"default": "1",
"name": "INDEX",
"options": [],
"type": "number"
},
{
"default": "my list",
"name": "LIST",
"options": [],
"type": "list"
},
{
"default": "thing",
"name": "ITEM",
"options": [],
"type": "string"
}
],
"category": "lists",
"event": "",
"guard": "",
"is_expression": false,
"js": "__bb.listReplace({LIST}, {INDEX}, {ITEM});",
"shape": "stack",
"text": "replace item %1 of %2 with %3"
},
"data_setvariableto": {
"args": [
{
"default": "my variable",
"name": "VARIABLE",
"options": [],
"type": "variable"
},
{
"default": "0",
"name": "VALUE",
"options": [],
"type": "string"
}
],
"category": "variables",
"event": "",
"guard": "",
"is_expression": false,
"js": "{VARIABLE} = {VALUE};",
"shape": "stack",
"text": "set %1 to %2"
},
"data_variable": {
"args": [
{
"default": "my variable",
"name": "VARIABLE",
"options": [],
"type": "variable"
}
],
"category": "variables",
"event": "",
"guard": "",
"is_expression": true,
"js": "{VARIABLE}",
"shape": "reporter",
"text": "%1"
},
"event_broadcast": {
"args": [
{
"default": "message1",
"name": "NAME",
"options": [],
"type": "string"
}
],
"category": "events",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __bb.broadcast({NAME});",
"shape": "stack",
"text": "broadcast %1"
},
"event_broadcast_receive": {
"args": [
{
"default": "message1",
"name": "NAME",
"options": [],
"type": "string"
}
],
"category": "events",
"event": "__broadcast",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when I receive %1"
},
"event_button": {
"args": [],
"category": "events",
"event": "MessageButtonClick",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when any button is clicked"
},
"event_button_id": {
"args": [
{
"default": "yes",
"name": "ID",
"options": [],
"type": "string"
}
],
"category": "events",
"event": "MessageButtonClick",
"guard": "__bb.eq(__ctx.button?.id, {ID})",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when button %1 is clicked"
},
"event_command": {
"args": [
{
"default": "ping",
"name": "NAME",
"options": [],
"type": "string"
},
{
"default": "what this command does",
"name": "HELP",
"options": [],
"type": "string"
}
],
"category": "events",
"event": "MessageCreate",
"guard": "__bb.eq(__ctx.message?.command?.name, {NAME})",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when command %1 is used, help %2"
},
"event_member_join": {
"args": [],
"category": "events",
"event": "ServerMemberJoined",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when someone joins the server"
},
"event_member_leave": {
"args": [],
"category": "events",
"event": "ServerMemberLeft",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when someone leaves the server"
},
"event_message": {
"args": [],
"category": "events",
"event": "MessageCreate",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when I get a message"
},
"event_message_contains": {
"args": [
{
"default": "hello",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "events",
"event": "MessageCreate",
"guard": "__bb.contains(__ctx.message?.content, {TEXT})",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when a message contains %1"
},
"event_message_deleted": {
"args": [],
"category": "events",
"event": "MessageDelete",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when a message is deleted"
},
"event_message_edited": {
"args": [],
"category": "events",
"event": "MessageUpdate",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when a message is edited"
},
"event_message_is": {
"args": [
{
"default": "hello",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "events",
"event": "MessageCreate",
"guard": "__bb.eq(__ctx.message?.content, {TEXT})",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when a message says %1"
},
"event_message_starts": {
"args": [
{
"default": "!",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "events",
"event": "MessageCreate",
"guard": "__bb.toStr(__ctx.message?.content).toLowerCase().startsWith(__bb.toStr({TEXT}).toLowerCase())",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when a message starts with %1"
},
"event_reaction_add": {
"args": [],
"category": "events",
"event": "MessageReactionAdded",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when a reaction is added"
},
"event_reaction_remove": {
"args": [],
"category": "events",
"event": "MessageReactionRemoved",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when a reaction is removed"
},
"event_ready": {
"args": [],
"category": "events",
"event": "Ready",
"guard": "",
"is_expression": false,
"js": "",
"shape": "hat",
"text": "when the bot starts"
},
"member_ban": {
"args": [
{
"default": "rule break",
"name": "REASON",
"options": [],
"type": "string"
}
],
"category": "members",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.member?.ban({ reason: __bb.toStr({REASON}) });",
"shape": "stack",
"text": "ban this member because %1"
},
"member_has_permission": {
"args": [
{
"default": "ADMIN",
"name": "PERM",
"options": [
"ADMIN",
"SEND_MESSAGE",
"MANAGE_ROLES",
"MANAGE_CHANNELS",
"KICK",
"BAN"
],
"type": "dropdown"
}
],
"category": "members",
"event": "",
"guard": "",
"is_expression": true,
"js": "(__ctx.member?.hasPermission?.({PERM}) === true)",
"shape": "boolean",
"text": "member has permission %1"
},
"member_id": {
"args": [],
"category": "members",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.member?.user?.id ?? __ctx.user?.id)",
"shape": "reporter",
"text": "member id"
},
"member_kick": {
"args": [],
"category": "members",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.member?.kick();",
"shape": "stack",
"text": "kick this member"
},
"member_kick_id": {
"args": [
{
"default": "user id",
"name": "ID",
"options": [],
"type": "string"
}
],
"category": "members",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.server?.kickMember(__bb.toStr({ID}));",
"shape": "stack",
"text": "kick user %1"
},
"member_name": {
"args": [],
"category": "members",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.member?.user?.username ?? __ctx.user?.username)",
"shape": "reporter",
"text": "member name"
},
"member_nickname": {
"args": [],
"category": "members",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.member?.nickname ?? __ctx.member?.user?.username)",
"shape": "reporter",
"text": "member nickname"
},
"member_role_count": {
"args": [],
"category": "members",
"event": "",
"guard": "",
"is_expression": true,
"js": "((__ctx.member?.roleIds ?? []).length)",
"shape": "reporter",
"text": "number of roles"
},
"member_unban_id": {
"args": [
{
"default": "user id",
"name": "ID",
"options": [],
"type": "string"
}
],
"category": "members",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.server?.unbanMember(__bb.toStr({ID}));",
"shape": "stack",
"text": "unban user %1"
},
"message_author": {
"args": [],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.message?.user?.username)",
"shape": "reporter",
"text": "author name"
},
"message_author_id": {
"args": [],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.message?.user?.id)",
"shape": "reporter",
"text": "author id"
},
"message_author_is_bot": {
"args": [],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "(__ctx.message?.user?.bot === true)",
"shape": "boolean",
"text": "author is a bot?"
},
"message_channel_id": {
"args": [],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.message?.channelId)",
"shape": "reporter",
"text": "channel id"
},
"message_command_arg": {
"args": [
{
"default": "1",
"name": "N",
"options": [],
"type": "number"
}
],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr((__ctx.message?.command?.args ?? [])[__bb.toNum({N}) - 1])",
"shape": "reporter",
"text": "command argument %1"
},
"message_command_args": {
"args": [],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr((__ctx.message?.command?.args ?? []).join(' '))",
"shape": "reporter",
"text": "all command arguments"
},
"message_delete": {
"args": [],
"category": "messages",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.message?.delete();",
"shape": "stack",
"text": "delete this message"
},
"message_edit": {
"args": [
{
"default": "edited",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "messages",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.message?.edit(__bb.toStr({TEXT}));",
"shape": "stack",
"text": "edit this message to %1"
},
"message_reaction_name": {
"args": [],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.reaction?.name)",
"shape": "reporter",
"text": "reaction emoji"
},
"message_reply": {
"args": [
{
"default": "Hello!",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "messages",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.message?.reply(__bb.toStr({TEXT}));",
"shape": "stack",
"text": "reply with %1"
},
"message_reply_buttons": {
"args": [
{
"default": "Pick one",
"name": "TEXT",
"options": [],
"type": "string"
},
{
"default": "Yes, No",
"name": "BUTTONS",
"options": [],
"type": "string"
}
],
"category": "messages",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.message?.reply(__bb.toStr({TEXT}), { buttons: __bb.toStr({BUTTONS}).split(',').map(s => s.trim()).filter(Boolean).map(s => ({ id: s.toLowerCase(), label: s })) });",
"shape": "stack",
"text": "reply with %1 and buttons %2"
},
"message_reply_html": {
"args": [
{
"default": "hi",
"name": "HTML",
"options": [],
"type": "string"
}
],
"category": "messages",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.message?.reply('\\u200c', { htmlEmbed: __bb.toStr({HTML}) });",
"shape": "stack",
"text": "reply with html %1"
},
"message_safe": {
"args": [
{
"default": "",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.escapeHtml({TEXT})",
"shape": "reporter",
"text": "safe text %1"
},
"message_send": {
"args": [
{
"default": "Hello!",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "messages",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.channel?.send(__bb.toStr({TEXT}));",
"shape": "stack",
"text": "send %1"
},
"message_send_html": {
"args": [
{
"default": "hi",
"name": "HTML",
"options": [],
"type": "string"
}
],
"category": "messages",
"event": "",
"guard": "",
"is_expression": false,
"js": "await __ctx.channel?.send('\\u200c', { htmlEmbed: __bb.toStr({HTML}) });",
"shape": "stack",
"text": "send html %1"
},
"message_send_to": {
"args": [
{
"default": "Hello!",
"name": "TEXT",
"options": [],
"type": "string"
},
{
"default": "channel id",
"name": "CHANNEL",
"options": [],
"type": "string"
}
],
"category": "messages",
"event": "",
"guard": "",
"is_expression": false,
"js": "await client.channels?.cache?.get(__bb.toStr({CHANNEL}))?.send(__bb.toStr({TEXT}));",
"shape": "stack",
"text": "send %1 to channel %2"
},
"message_text": {
"args": [],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.message?.content)",
"shape": "reporter",
"text": "message text"
},
"message_text_clean": {
"args": [],
"category": "messages",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.stripMentions(__ctx.message?.content)",
"shape": "reporter",
"text": "message text without mentions"
},
"operator_add": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "number"
},
{
"default": "",
"name": "B",
"options": [],
"type": "number"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(__bb.toNum({A}) + __bb.toNum({B}))",
"shape": "reporter",
"text": "%1 + %2"
},
"operator_and": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "boolean"
},
{
"default": "",
"name": "B",
"options": [],
"type": "boolean"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(({A}) && ({B}))",
"shape": "boolean",
"text": "%1 and %2"
},
"operator_contains": {
"args": [
{
"default": "apple",
"name": "A",
"options": [],
"type": "string"
},
{
"default": "a",
"name": "B",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.contains({A}, {B})",
"shape": "boolean",
"text": "%1 contains %2 ?"
},
"operator_divide": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "number"
},
{
"default": "",
"name": "B",
"options": [],
"type": "number"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(__bb.toNum({A}) / __bb.toNum({B}))",
"shape": "reporter",
"text": "%1 / %2"
},
"operator_equals": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "string"
},
{
"default": "50",
"name": "B",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.eq({A}, {B})",
"shape": "boolean",
"text": "%1 = %2"
},
"operator_gt": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "string"
},
{
"default": "50",
"name": "B",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.gt({A}, {B})",
"shape": "boolean",
"text": "%1 > %2"
},
"operator_is_empty": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(__bb.toStr({A}).trim().length === 0)",
"shape": "boolean",
"text": "%1 is empty ?"
},
"operator_join": {
"args": [
{
"default": "apple ",
"name": "A",
"options": [],
"type": "string"
},
{
"default": "banana",
"name": "B",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(__bb.toStr({A}) + __bb.toStr({B}))",
"shape": "reporter",
"text": "join %1 %2"
},
"operator_length": {
"args": [
{
"default": "apple",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr({TEXT}).length",
"shape": "reporter",
"text": "length of %1"
},
"operator_letter_of": {
"args": [
{
"default": "1",
"name": "N",
"options": [],
"type": "number"
},
{
"default": "apple",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.letterOf({N}, {TEXT})",
"shape": "reporter",
"text": "letter %1 of %2"
},
"operator_lowercase": {
"args": [
{
"default": "HELLO",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr({TEXT}).toLowerCase()",
"shape": "reporter",
"text": "lowercase %1"
},
"operator_lt": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "string"
},
{
"default": "50",
"name": "B",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.lt({A}, {B})",
"shape": "boolean",
"text": "%1 < %2"
},
"operator_mathop": {
"args": [
{
"default": "abs",
"name": "OP",
"options": [
"abs",
"floor",
"ceiling",
"sqrt",
"sin",
"cos",
"tan",
"ln",
"log",
"e ^",
"10 ^"
],
"type": "dropdown"
},
{
"default": "",
"name": "A",
"options": [],
"type": "number"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.mathop({OP}, {A})",
"shape": "reporter",
"text": "%1 of %2"
},
"operator_mod": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "number"
},
{
"default": "",
"name": "B",
"options": [],
"type": "number"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(__bb.toNum({A}) % __bb.toNum({B}))",
"shape": "reporter",
"text": "%1 mod %2"
},
"operator_multiply": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "number"
},
{
"default": "",
"name": "B",
"options": [],
"type": "number"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(__bb.toNum({A}) * __bb.toNum({B}))",
"shape": "reporter",
"text": "%1 * %2"
},
"operator_not": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "boolean"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(!({A}))",
"shape": "boolean",
"text": "not %1"
},
"operator_or": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "boolean"
},
{
"default": "",
"name": "B",
"options": [],
"type": "boolean"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(({A}) || ({B}))",
"shape": "boolean",
"text": "%1 or %2"
},
"operator_random": {
"args": [
{
"default": "1",
"name": "FROM",
"options": [],
"type": "number"
},
{
"default": "10",
"name": "TO",
"options": [],
"type": "number"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.randomInt({FROM}, {TO})",
"shape": "reporter",
"text": "pick random %1 to %2"
},
"operator_round": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "number"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "Math.round(__bb.toNum({A}))",
"shape": "reporter",
"text": "round %1"
},
"operator_subtract": {
"args": [
{
"default": "",
"name": "A",
"options": [],
"type": "number"
},
{
"default": "",
"name": "B",
"options": [],
"type": "number"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "(__bb.toNum({A}) - __bb.toNum({B}))",
"shape": "reporter",
"text": "%1 - %2"
},
"operator_trim": {
"args": [
{
"default": " hi ",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr({TEXT}).trim()",
"shape": "reporter",
"text": "trim %1"
},
"operator_uppercase": {
"args": [
{
"default": "hello",
"name": "TEXT",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr({TEXT}).toUpperCase()",
"shape": "reporter",
"text": "uppercase %1"
},
"operator_word_of": {
"args": [
{
"default": "1",
"name": "N",
"options": [],
"type": "number"
},
{
"default": "a b c",
"name": "TEXT",
"options": [],
"type": "string"
},
{
"default": " ",
"name": "SEP",
"options": [],
"type": "string"
}
],
"category": "operators",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr((__bb.toStr({TEXT}).split(__bb.toStr({SEP})))[__bb.toNum({N}) - 1])",
"shape": "reporter",
"text": "word %1 of %2 split by %3"
},
"sensing_current": {
"args": [
{
"default": "hour",
"name": "WHAT",
"options": [
"year",
"month",
"date",
"dayofweek",
"hour",
"minute",
"second",
"timestamp"
],
"type": "dropdown"
}
],
"category": "sensing",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.nowPart({WHAT})",
"shape": "reporter",
"text": "current %1"
},
"sensing_fetch": {
"args": [
{
"default": "https://example.com",
"name": "URL",
"options": [],
"type": "string"
}
],
"category": "sensing",
"event": "",
"guard": "",
"is_expression": true,
"js": "await __bb.fetchText({URL})",
"shape": "reporter",
"text": "text from url %1"
},
"sensing_json": {
"args": [
{
"default": "data.name",
"name": "PATH",
"options": [],
"type": "string"
},
{
"default": "",
"name": "JSON",
"options": [],
"type": "string"
}
],
"category": "sensing",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.jsonPath({JSON}, {PATH})",
"shape": "reporter",
"text": "value %1 of json %2"
},
"server_bot_name": {
"args": [],
"category": "server",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(client.user?.username)",
"shape": "reporter",
"text": "my bot name"
},
"server_channel_name": {
"args": [],
"category": "server",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.channel?.name)",
"shape": "reporter",
"text": "channel name"
},
"server_id": {
"args": [],
"category": "server",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.server?.id)",
"shape": "reporter",
"text": "server id"
},
"server_member_count": {
"args": [],
"category": "server",
"event": "",
"guard": "",
"is_expression": true,
"js": "((__ctx.server?.members?.cache?.size) ?? 0)",
"shape": "reporter",
"text": "member count"
},
"server_name": {
"args": [],
"category": "server",
"event": "",
"guard": "",
"is_expression": true,
"js": "__bb.toStr(__ctx.server?.name)",
"shape": "reporter",
"text": "server name"
}
},
"format": 1,
"generated_by": "app/tools/export_catalog.gd"
}