PenguinMod

PenguinMod Ember blocks

Ember is the chat part of Nookara. Every Ember server is its own community with its own address. The Nookara extension lets a PenguinMod or TurboWarp project sign in to any of them, read channels, send and react to messages, and post through webhooks, using the account the player already has.

Load the extension from https://ikelene.net/gallery/extensions/velora_extension.js (extension id velora) with Run without sandbox turned on, because sign-in opens a popup. The blocks are in the Nookara category under the label Ember servers.

In this guide

How it works

Nookara is the identity: your account, friends, direct messages, credits and the keys that prove who wrote a message. Ember servers are separate. A server is either hosted by Nookara at SLUG-bonfire.ikelene.net, run by someone on their own domain, or the main community at https://chat.ikelene.net.

Way to sign inBlocksNeeds
Nookara loginconnect to instance [URL]The project signed in with Nookara and a permission integer that asks for Chat Messaging (2048). For example 2053 asks for Basic Profile, Project Auth and Chat Messaging. The player decides on the sign-in screen and may untick any permission, so the block can fail even when you asked (see Permissions can be declined).
Local accountconnect ... as [USERNAME] password [PASSWORD] and register on Ember server ...A server that keeps its own accounts. No Nookara sign-in and no scope needed.

Every block that takes a server has a URL argument. Use the server address, for example https://chat.ikelene.net. Servers must use HTTPS; plain HTTP is accepted only for localhost. A project can be connected to several servers at once, and each block works on the one whose address you give it. All arguments are text. Channels can be given by name (a leading # is fine, case does not matter) or by channel id. The older Ember communities and channels blocks (for example send [MSG] in channel ID [CHANNEL] of server ID [SERVER]) take a server ID and a channel ID instead of an address; see Migrating old projects.

Permissions can be declined

Nothing in the permission integer is required: it is a request, and the sign-in popup lets the player untick any permission (the risky ones, such as Sign Messages, Spend Credits and Modify Settings, start unticked). A block that needs a permission the player did not allow stops with a red error that says which one and whether the project never asked for it or the player chose not to allow it. Ask only for what your project uses, show a "log in again" button that runs the sign-in block again, and let the project keep working without the optional parts. An administrator can also switch a service off for one account; then the error says it was disabled by an administrator and logging in again does not help (check ahead with administrator has paused [SERVICE]?). The server list, unread state and every other Ember feature that does not need the missing permission keep working.

Block reference

Every visible block of the Nookara extension (version 1.9.6), drawn the way it looks in the palette, with the default value of each input. Round slots take text or numbers, slots with an arrow are menus. The tags show the permission (scope) the block checks before it does anything, taken from the extension itself. If a block is missing in your project, reload the extension: older projects keep the version they loaded.

Connection 4

Whether the Nookara service answers, and events for the connection opening or dropping.

Starts the script below it when this happens.

whenConnected
hatConnection
Link

Starts the script below it when this happens.

whenDisconnected
hatConnection
Link

Reports true or false.

serverOnline
booleanConnection
Link

Reports true or false.

isConnected
booleanConnection
Link
Authentication 8

The sign-in popup, tokens and the result of signing in. Every other group needs the project to be signed in first.

Opens the approval popup. PERMISSIONS is the integer from the permissions calculator. Throws if the popup is blocked.

openLoginPrompt
commandAuthentication
Link

Signs in with a saved token. Throws invalid_token for a bad token.

loginWithToken
commandAuthentication
Link

Signs out and closes Ember sessions that used Nookara login.

logout
commandAuthentication
Link

The session token. Throws Not logged in. Never post it anywhere.

currentToken
reporterAuthentication
Link

True while the sign-in popup is open.

isLoginOpen
booleanAuthentication
Link

True when an administrator switched that service off for the account.

serviceDisabled
booleanAuthentication
Link

Check the result of sign-in: successful or failed.

authResult
booleanAuthentication
Link

Starts when sign-in finishes.

whenAuthenticated
hatAuthentication
Link
Your Nookara Account 7

Read fields of the signed-in account. Sensitive fields need the matching scope.

One field of the account, such as username, membership, credits, badges or avatar_url.

getAccountKey
reporterYour Nookara Account
Link

Reports true or false.

keyExists
booleanYour Nookara Account
Link
getAllKeys
reporterYour Nookara Account
Link
getAllValues
reporterYour Nookara Account
Link

Every available account field at once.

getAccountObject
reporterYour Nookara Account
Link

Whether the account is restricted.

isUserBanned
booleanYour Nookara Account
Link

Starts the script below it when this happens.

whenAccountUpdated
hatYour Nookara Account
Link
Profile 3

Edit the profile of the signed-in account. Needs the Modify Settings scope.

Sets the profile picture from a data URI.

uploadPfp
commandProfileNeeds Modify Settings
Link

Sets the colour of your name in chat.

setChatColor
commandProfileNeeds Modify Settings
Link
setPronouns
commandProfileNeeds Modify Settings
Link
Data Storage 10

Per-player saved data for the project. Choose a storage ID first; reads need Read Storage and writes need Write Storage.

Choose the storage namespace. Without it the storage blocks throw No storage ID set.

setStorageId
commandData Storage
Link

Reports true or false.

storageIdSet
booleanData Storage
Link
getStorageId
reporterData Storage
Link

Read one stored value.

getStorage
reporterData StorageNeeds Read Storage
Link

Write one value.

setStorage
commandData StorageNeeds Write Storage
Link

Reports true or false.

storageKeyExists
booleanData StorageNeeds Read Storage
Link

Delete one entry.

deleteStorageKey
commandData StorageNeeds Write Storage
Link
getAllStorageKeys
reporterData StorageNeeds Read Storage
Link
getAllStorageValues
reporterData StorageNeeds Read Storage
Link

Erase the whole namespace.

clearStorage
commandData StorageNeeds Write Storage
Link
Storage Information 7

How much of the account storage is used.

storageUsage
reporterStorage InformationNeeds Read Storage
Link
storageLimit
reporterStorage InformationNeeds Read Storage
Link
storageRemaining
reporterStorage InformationNeeds Read Storage
Link
storageBiggest
reporterStorage InformationNeeds Read Storage
Link

Reports true or false.

rpIsMobile
booleanStorage InformationNeeds Chat Messaging
Link

Reports true or false.

rpIsConsole
booleanStorage InformationNeeds Chat Messaging
Link

Reports true or false.

rpIsAutoIdle
booleanStorage InformationNeeds Chat Messaging
Link
Ember classic channel context 12

Blocks that work on the currently selected channel or room.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

sendGlobalMessage
commandEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

getGlobalMessages
reporterEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

sendRoomMessage
commandEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

getRoomMessages
reporterEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

joinRoom
commandEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

setTyping
commandEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

typingUsers
reporterEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

whenGlobalMessageReceived
hatEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

whenRoomMessageReceived
hatEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

lastMessageUser
reporterEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

lastMessageContent
reporterEmber classic channel context
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

lastMessageUserJson
reporterEmber classic channel context
Link
Ember communities and channels 16

Community and channel blocks that take a server ID and channel ID.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatMyServers
reporterEmber communities and channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatJoinServer
commandEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatLeaveServer
commandEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatChannels
reporterEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatMembers
reporterEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatOnlineMembers
reporterEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatIsMember
booleanEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatSend
commandEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatMessages
reporterEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatChannelLocked
booleanEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatCanPost
booleanEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

whenChatMessage
hatEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

whenAnyChatMessage
hatEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatLastMessage
reporterEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatTyping
commandEmber communities and channels
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

chatTypingUsers
reporterEmber communities and channels
Link
Ember server connections 14

Connect a project to one or several Ember servers by address, with Nookara login or a local account.

Signs in to an Ember server with your Nookara account and opens the live connection. Needs Chat Messaging. Nothing connects by itself: run it for every server your project uses.

biConnectInstance
commandEmber server connectionsNeeds Chat Messaging
Link

connecting, connected, disconnected or error. The extension never retries a dropped connection; the project decides.

biConnectionState
reporterEmber server connections
Link

The last connection error text, or empty.

biConnectionError
reporterEmber server connections
Link

Runs when the connection to that server changes to the chosen state. Use it to reconnect.

biWhenState
hatEmber server connections
Link

For servers that have their own accounts instead of Nookara login. Needs no Nookara sign-in and no scope.

biConnectLocal
commandEmber server connections
Link

Creates a local account on a server that allows sign-ups and signs you in with it.

biRegister
commandEmber server connections
Link

Closes the live connection, forgets the server for saves and ends the session on the server.

biDisconnect
commandEmber server connections
Link

True once the live connection is up and ready. False while connecting, after a drop, or when never connected.

biConnected
booleanEmber server connections
Link

Reports JSON as text. Use the JSON blocks to read it.

biMyInstances
reporterEmber server connectionsNeeds Chat Messaging
Link
biSaveInstance
commandEmber server connectionsNeeds Chat Messaging
Link
biForgetInstance
commandEmber server connectionsNeeds Chat Messaging
Link

Reports JSON as text. Use the JSON blocks to read it.

biConnectedList
reporterEmber server connections
Link

Reports JSON as text. Use the JSON blocks to read it.

biHostedServers
reporterEmber server connectionsNeeds Chat Messaging
Link

Reports JSON as text. Use the JSON blocks to read it.

biDirectory
reporterEmber server connections
Link
Ember servers: info 5

Facts about a connected server.

biAbout
reporterEmber servers: info
Link

Reports true or false.

biHasFeature
booleanEmber servers: info
Link

The community name, or the server name if there is no community yet.

biServerName
reporterEmber servers: info
Link

Your account id on that server. Compare it with the author id of a message to ignore your own posts.

biMyId
reporterEmber servers: info
Link

Reports JSON as text. Use the JSON blocks to read it.

biVoiceInfo
reporterEmber servers: info
Link
Ember communities 16

Join, leave and administer the community of a server.

Reports JSON as text. Use the JSON blocks to read it.

biServers
reporterEmber communities
Link

Reports JSON as text. Use the JSON blocks to read it.

biCommunity
reporterEmber communities
Link
biJoin
commandEmber communities
Link

Reports true or false.

biPending
booleanEmber communities
Link
biLeave
commandEmber communities
Link

The member list of the community.

biMembers
reporterEmber communities
Link

Reports JSON as text. Use the JSON blocks to read it.

biRoles
reporterEmber communities
Link
biPermissions
reporterEmber communities
Link

Reports true or false.

biHasPermission
booleanEmber communities
Link
biSetRole
commandEmber communities
Link
biKick
commandEmber communities
Link
biBan
commandEmber communities
Link
biUnban
commandEmber communities
Link

Reports JSON as text. Use the JSON blocks to read it.

biJoinRequests
reporterEmber communities
Link
biAcceptRequest
commandEmber communities
Link
biDenyRequest
commandEmber communities
Link
Ember invites 6

Create, inspect and use invite links.

biCreateInvite
reporterEmber invites
Link

Reports JSON as text. Use the JSON blocks to read it.

biInviteInfo
reporterEmber invites
Link
biJoinInvite
commandEmber invites
Link

Reports JSON as text. Use the JSON blocks to read it.

biInvites
reporterEmber invites
Link
biDeleteInvite
commandEmber invites
Link
Ember channels 7

List, find and manage channels.

Every channel of the community, each with its cid and name.

biChannels
reporterEmber channels
Link

Reports JSON as text. Use the JSON blocks to read it.

biServerChannels
reporterEmber channels
Link

Turns a channel name into its id. A leading # is fine and case does not matter.

biChannelId
reporterEmber channels
Link
biChannelProp
reporterEmber channels
Link
biCreateChannel
commandEmber channels
Link
biRenameChannel
commandEmber channels
Link
biDeleteChannel
commandEmber channels
Link
Ember messages 28

Send, reply, edit, delete, react, pin and read messages, and react to new ones.

Posts a message. Text is cut at 4000 characters. Signed automatically when signing is allowed.

biSend
commandEmber messages
Link

Posts a reply that points at the message with that id.

biReply
commandEmber messages
Link

Replaces the text of one of your own messages. Keeps the reply link and attachments.

biEdit
commandEmber messages
Link
biSendAlias
commandBonfire messages
Link
biEditAlias
commandBonfire messages
Link

Deletes a message. The server decides whether your role may delete it.

biDelete
commandEmber messages
Link

Adds your reaction to the message.

biReact
commandEmber messages
Link
biUnreact
commandEmber messages
Link
biPin
commandEmber messages
Link
biUnpin
commandEmber messages
Link

Reports JSON as text. Use the JSON blocks to read it.

biPins
reporterEmber messages
Link

Up to the latest 100 messages of the channel.

biMessages
reporterEmber messages
Link

Reports JSON as text. Use the JSON blocks to read it.

biHistory
reporterEmber messages
Link

Reports JSON as text. Use the JSON blocks to read it.

biMessage
reporterEmber messages
Link

Reports JSON as text. Use the JSON blocks to read it.

biSearch
reporterEmber messages
Link

Reports JSON as text. Use the JSON blocks to read it.

biSearchAll
reporterEmber messages
Link
biMarkRead
commandEmber messages
Link
biTyping
commandEmber messages
Link

Reports JSON as text. Use the JSON blocks to read it.

biTypingUsers
reporterEmber messages
Link

Runs once for every new message in that channel, including your own. Read it with the last message blocks inside the script.

biWhenMessage
hatEmber messages
Link

Starts the script below it when this happens.

biWhenEvent
hatEmber messages
Link

Reports JSON as text. Use the JSON blocks to read it.

biEventJson
reporterEmber messages
Link

Text of the newest message the server delivered to you, in any channel. Empty until one arrives.

biLastText
reporterEmber messages
Link

Account id of the author of the newest message (compare with my id).

biLastAuthor
reporterEmber messages
Link
biLastAlias
reporterBonfire messages
Link

Message id of the newest message. Use it with reply, edit, delete and react.

biLastId
reporterEmber messages
Link

Channel id the newest message was posted in.

biLastChannel
reporterEmber messages
Link
biLastProp
reporterEmber messages
Link
Ember media 4

Upload files and send them as attachments.

Reports JSON as text. Use the JSON blocks to read it.

biUpload
reporterEmber media
Link

Reports JSON as text. Use the JSON blocks to read it.

biImportMedia
reporterEmber media
Link
biSendAttachments
commandEmber media
Link
biSendFile
commandEmber media
Link
Ember bots 4

Manage bots of a community.

Reports JSON as text. Use the JSON blocks to read it.

biBots
reporterEmber bots
Link

Reports JSON as text. Use the JSON blocks to read it.

biCreateBot
reporterEmber bots
Link
biRemoveBot
commandEmber bots
Link
biAddGalleryBot
commandEmber bots
Link
Ember JSON: invite 1

One block per Ember route. The result is the raw JSON described in the Nookara API guide.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatInviteCodeGET /chat/invite/:code
reporterEmber JSON: inviteNeeds Chat Messaging
Link
Ember JSON: servers 24

One block per Ember route. The result is the raw JSON described in the Nookara API guide.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatServersGET /chat/servers
reporterEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatServersPOST /chat/servers
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatServersSidGET /chat/servers/:sid
reporterEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPatchChatServersSidPATCH /chat/servers/:sid
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatServersSidRolesPOST /chat/servers/:sid/roles
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPutChatServersSidRolesOrderPUT /chat/servers/:sid/roles/order
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPatchChatServersSidRolesRidPATCH /chat/servers/:sid/roles/:rid
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatServersSidRolesRidDELETE /chat/servers/:sid/roles/:rid
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPutChatServersSidMembersUsernameRolesRidPUT /chat/servers/:sid/members/:username/roles/:rid
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatServersSidMembersUsernameRolesRidDELETE /chat/servers/:sid/members/:username/roles/:rid
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatServersSidRolesRidIconPOST /chat/servers/:sid/roles/:rid/icon
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatServersSidRolesRidIconDELETE /chat/servers/:sid/roles/:rid/icon
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatServersSidDELETE /chat/servers/:sid
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatServersSidJoinPOST /chat/servers/:sid/join
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatServersSidLeavePOST /chat/servers/:sid/leave
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatServersSidMembersGET /chat/servers/:sid/members
reporterEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatServersSidMembersUsernameDELETE /chat/servers/:sid/members/:username
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatServersSidBansUsernameDELETE /chat/servers/:sid/bans/:username
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatServersSidIconPOST /chat/servers/:sid/icon
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatServersSidBannerPOST /chat/servers/:sid/banner
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatServersSidIconDELETE /chat/servers/:sid/icon
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatServersSidBannerDELETE /chat/servers/:sid/banner
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatServersSidChannelsPOST /chat/servers/:sid/channels
commandEmber JSON: serversNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatServersSidSearchGET /chat/servers/:sid/search
reporterEmber JSON: serversNeeds Chat Messaging
Link
Ember JSON: discover 1

One block per Ember route. The result is the raw JSON described in the Nookara API guide.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatDiscoverGET /chat/discover
reporterEmber JSON: discoverNeeds Chat Messaging
Link
Ember JSON: channels 13

One block per Ember route. The result is the raw JSON described in the Nookara API guide.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatChannelsCidIconPOST /chat/channels/:cid/icon
commandEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPatchChatChannelsCidPATCH /chat/channels/:cid
commandEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatChannelsCidDELETE /chat/channels/:cid
commandEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatChannelsCidMessagesGET /chat/channels/:cid/messages
reporterEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatChannelsCidMessagesPOST /chat/channels/:cid/messages
commandEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatChannelsCidReadPOST /chat/channels/:cid/read
commandEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatChannelsCidSearchGET /chat/channels/:cid/search
reporterEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatChannelsCidStarboardGET /chat/channels/:cid/starboard
reporterEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPutChatChannelsCidPermsPUT /chat/channels/:cid/perms
commandEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatChannelsCidPinsGET /chat/channels/:cid/pins
reporterEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatChannelsCidShopGET /chat/channels/:cid/shop
reporterEmber JSON: channelsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatChannelsCidShopRidPOST /chat/channels/:cid/shop/:rid
commandEmber JSON: channelsNeeds Chat MessagingNeeds Spend Credits
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatChannelsCidShopRidDELETE /chat/channels/:cid/shop/:rid
commandEmber JSON: channelsNeeds Chat Messaging
Link
Ember JSON: join 1

One block per Ember route. The result is the raw JSON described in the Nookara API guide.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatJoinCodePOST /chat/join/:code
commandEmber JSON: joinNeeds Chat Messaging
Link
Ember JSON: messages 6

One block per Ember route. The result is the raw JSON described in the Nookara API guide.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPatchChatMessagesIdPATCH /chat/messages/:id
commandEmber JSON: messagesNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatMessagesIdDELETE /chat/messages/:id
commandEmber JSON: messagesNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPutChatMessagesIdReactionsEmojiPUT /chat/messages/:id/reactions/:emoji
commandEmber JSON: messagesNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatMessagesIdReactionsEmojiDELETE /chat/messages/:id/reactions/:emoji
commandEmber JSON: messagesNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPutChatMessagesIdPinPUT /chat/messages/:id/pin
commandEmber JSON: messagesNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatMessagesIdPinDELETE /chat/messages/:id/pin
commandEmber JSON: messagesNeeds Chat Messaging
Link
Ember JSON: upload 1

One block per Ember route. The result is the raw JSON described in the Nookara API guide.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatUploadPOST /chat/upload
commandEmber JSON: uploadNeeds Chat MessagingNeeds Upload Media
Link
Ember JSON: bots 7

One block per Ember route. The result is the raw JSON described in the Nookara API guide.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGetChatBotsGET /chat/bots
reporterEmber JSON: botsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatBotsPOST /chat/bots
commandEmber JSON: botsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPatchChatBotsIdPATCH /chat/bots/:id
commandEmber JSON: botsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatBotsIdAvatarPOST /chat/bots/:id/avatar
commandEmber JSON: botsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatBotsIdTokenPOST /chat/bots/:id/token
commandEmber JSON: botsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfDeleteChatBotsIdDELETE /chat/bots/:id
commandEmber JSON: botsNeeds Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatBotsByNameUsernameAddPOST /chat/bots/by-name/:username/add
commandEmber JSON: botsNeeds Chat Messaging
Link
Ember JSON: media 2

One block per Ember route. The result is the raw JSON described in the Nookara API guide.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatMediaUploadPOST /chat/media/upload
commandEmber JSON: mediaNeeds Chat MessagingNeeds Upload Media
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfPostChatMediaExternalPOST /chat/media/external
commandEmber JSON: mediaNeeds Chat Messaging
Link
Ember advanced 2

Raw API calls and webhooks.

Reports JSON as text. Use the JSON blocks to read it.

biApi
reporterEmber advanced
Link

Posts through a webhook link. No sign-in needed.

biWebhook
commandEmber advanced
Link
Status & Rich Presence 9

What the player is doing, shown under their name and on their profile. Needs Chat Messaging.

TYPE is playing, listening, watching, competing, streaming or custom.

rpSet
commandStatus & Rich PresenceNeeds Chat Messaging
Link
rpImage
commandStatus & Rich PresenceNeeds Chat Messaging
Link
rpClear
commandStatus & Rich PresenceNeeds Chat Messaging
Link

Sets a custom status text.

rpCustom
commandStatus & Rich PresenceNeeds Chat Messaging
Link

Reports JSON as text. Use the JSON blocks to read it.

rpPresence
reporterStatus & Rich PresenceNeeds Chat Messaging
Link
rpStatusOf
reporterStatus & Rich PresenceNeeds Chat Messaging
Link
rpActivityOf
reporterStatus & Rich PresenceNeeds Chat Messaging
Link

Starts the script below it when this happens.

whenPresenceChanges
hatStatus & Rich Presence
Link
rpLastUser
reporterStatus & Rich Presence
Link
Nookara Events & Permissions 13

Live events, permission checks and a few helpers for the Nookara connection.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfWhenEvent
hatNookara Events & Permissions
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfEventJson
reporterNookara Events & Permissions
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfEventField
reporterNookara Events & Permissions
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfServerPermissions
reporterNookara Events & Permissions
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfChannelPermissions
reporterNookara Events & Permissions
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfHasPermission
booleanNookara Events & Permissions
Link
bfPermissionBit
reporterNookara Events & Permissions
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfRoles
reporterNookara Events & Permissions
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfSendReply
commandNookara Events & Permissions
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfTypingState
commandNookara Events & Permissions
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfJoinVoiceChannel
commandNookara Events & Permissions
Link
bfJoinCall
commandNookara Events & PermissionsNeeds Chat MessagingNeeds Nookara Voice
Link
bfEditDM
commandNookara Events & PermissionsNeeds Send Instant Messages
Link
Game Servers (Minecraft) 12

Talk to a Minecraft server connected to an Ember channel.

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGameServers
reporterGame Servers (Minecraft)
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGameStatus
reporterGame Servers (Minecraft)Needs Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGameOnline
booleanGame Servers (Minecraft)Needs Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGameConsole
reporterGame Servers (Minecraft)Needs Chat Messaging
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfGameCommand
commandGame Servers (Minecraft)Needs Chat Messaging
Link
bfGameCommandOutput
reporterGame Servers (Minecraft)
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfWhenGameStatus
hatGame Servers (Minecraft)
Link

Uses explicitly connected Ember instances. Use server IDs and channel IDs; unique legacy names and invite links are accepted. No automatic connections. Classic global blocks use the selected channel (join room), or a unique general channel.

bfWhenGameConsole
hatGame Servers (Minecraft)
Link
bfGameLastLine
reporterGame Servers (Minecraft)
Link

Reports true or false.

bfMessageFromMinecraft
booleanGame Servers (Minecraft)
Link
bfMessageGameServer
reporterGame Servers (Minecraft)
Link
bfMessageGameEvent
reporterGame Servers (Minecraft)
Link
Nookara API: users 1

One block per Nookara route. The result is the raw JSON described in the Nookara API guide.

bfGetChatUsersUsernameGET /chat/users/:username
reporterNookara API: usersNeeds Chat Messaging
Link
Nookara API: bots 8

One block per Nookara route. The result is the raw JSON described in the Nookara API guide.

Reports JSON as text. Use the JSON blocks to read it.

bfGetBonfireBotsGalleryGET /bonfire/bots/gallery
reporterNookara API: bots
Link
bfGetBonfireBotsGalleryTagsGET /bonfire/bots/gallery/tags
reporterNookara API: bots
Link
bfGetBonfireBotsGalleryIdGET /bonfire/bots/gallery/:id
reporterNookara API: bots
Link

Reports JSON as text. Use the JSON blocks to read it.

bfPostBonfireBotsGalleryIdTicketPOST /bonfire/bots/gallery/:id/ticket
reporterNookara API: botsNeeds Chat Messaging
Link
bfGetChatBotsIdGalleryGET /chat/bots/:id/gallery
reporterNookara API: botsNeeds Chat Messaging
Link
bfPutChatBotsIdGalleryPUT /chat/bots/:id/gallery
commandNookara API: botsNeeds Chat Messaging
Link
bfPostChatBotsIdGallerySubmitPOST /chat/bots/:id/gallery/submit
commandNookara API: botsNeeds Chat Messaging
Link
bfPostChatBotsIdGalleryWithdrawPOST /chat/bots/:id/gallery/withdraw
commandNookara API: botsNeeds Chat Messaging
Link
Nookara API: presence 5

One block per Nookara route. The result is the raw JSON described in the Nookara API guide.

bfGetChatPresenceUsernameGET /chat/presence/:username
reporterNookara API: presenceNeeds Chat Messaging
Link
bfPostChatPresenceStatusPOST /chat/presence/status
commandNookara API: presenceNeeds Chat Messaging
Link
bfPostChatPresenceCustomPOST /chat/presence/custom
commandNookara API: presenceNeeds Chat Messaging
Link
bfPostChatPresenceActivityPOST /chat/presence/activity
commandNookara API: presenceNeeds Chat Messaging
Link
bfDeleteChatPresenceActivityKeyDELETE /chat/presence/activity/:key?
commandNookara API: presenceNeeds Chat Messaging
Link
Nookara API: dm 2

One block per Nookara route. The result is the raw JSON described in the Nookara API guide.

bfPutChatDmIdReactionsEmojiPUT /chat/dm/:id/reactions/:emoji
commandNookara API: dmNeeds Chat Messaging
Link
bfDeleteChatDmIdReactionsEmojiDELETE /chat/dm/:id/reactions/:emoji
commandNookara API: dmNeeds Chat Messaging
Link
Nookara API: calls 1

One block per Nookara route. The result is the raw JSON described in the Nookara API guide.

bfPostChatCallsPOST /chat/calls
commandNookara API: callsNeeds Chat MessagingNeeds Nookara Voice
Link
Nookara API: groups 11

One block per Nookara route. The result is the raw JSON described in the Nookara API guide.

bfGetGroupsGET /groups
reporterNookara API: groupsNeeds Chat Messaging
Link
bfPostGroupsPOST /groups
commandNookara API: groupsNeeds Chat Messaging
Link
bfGetGroupsRoomGET /groups/:room
reporterNookara API: groupsNeeds Chat Messaging
Link
bfGetGroupsRoomMessagesGET /groups/:room/messages
reporterNookara API: groupsNeeds Chat Messaging
Link
bfPostGroupsRoomMessagesPOST /groups/:room/messages
commandNookara API: groupsNeeds Chat Messaging
Link
bfPostGroupsRoomMembersPOST /groups/:room/members
commandNookara API: groupsNeeds Chat Messaging
Link
bfDeleteGroupsRoomMembersUsernameDELETE /groups/:room/members/:username
commandNookara API: groupsNeeds Chat Messaging
Link
bfPatchGroupsRoomPATCH /groups/:room
commandNookara API: groupsNeeds Chat Messaging
Link
bfDeleteGroupsRoomDELETE /groups/:room
commandNookara API: groupsNeeds Chat Messaging
Link
clientUsername
reporterNookara API: groups
Link
myClientObject
reporterNookara API: groups
Link
Users 7

Who is connected to the project right now.

connectedUsers
reporterUsers
Link
setStatus
commandUsers
Link

Reports true or false.

isUserConnected
booleanUsers
Link

Starts the script below it when this happens.

whenUserJoins
hatUsers
Link

Starts the script below it when this happens.

whenUserLeaves
hatUsers
Link
lastUserJoined
reporterUsers
Link
lastUserLeft
reporterUsers
Link
DMs (Works offline) 15

Direct messages (Instant Messages). Reading needs Read Instant Messages, sending needs Send Instant Messages.

Sends a direct message. Reports an error if delivery times out.

sendIM
commandDMs (Works offline)Needs Send Instant Messages
Link
replyToStatus
commandDMs (Works offline)Needs Send Instant Messages
Link

Reports true or false.

canReplyToStatus
booleanDMs (Works offline)
Link

Fires on incoming direct messages.

whenIMReceived
hatDMs (Works offline)
Link

Starts the script below it when this happens.

whenIMReceivedFrom
hatDMs (Works offline)
Link
lastIMSender
reporterDMs (Works offline)
Link
lastIMContent
reporterDMs (Works offline)
Link

Reports JSON as text. Use the JSON blocks to read it.

lastIMJson
reporterDMs (Works offline)
Link
lastIMStatusReply
reporterDMs (Works offline)
Link

Reports true or false.

lastIMDelivered
booleanDMs (Works offline)
Link

Message history with one user.

getIMThread
reporterDMs (Works offline)Needs Read Instant Messages
Link

The conversation list.

getIMConversations
reporterDMs (Works offline)Needs Read Instant Messages
Link

Unread count over all conversations.

getIMUnread
reporterDMs (Works offline)Needs Read Instant Messages
Link

Marks the messages from that user as read.

markIMRead
commandDMs (Works offline)Needs Read Instant MessagesNeeds Send Instant Messages
Link
deleteIM
commandDMs (Works offline)Needs Send Instant Messages
Link
Your Nookara Circle 10

Friends. Reading needs View Friends, changing needs Manage Friends.

The friends list.

getFriendsList
reporterYour Nookara CircleNeeds View Friends
Link

Sends a friend request.

sendFriendRequest
commandYour Nookara CircleNeeds Manage Friends
Link
acceptFriendReq
commandYour Nookara CircleNeeds Manage Friends
Link
declineFriendReq
commandYour Nookara CircleNeeds Manage Friends
Link
removeFriend
commandYour Nookara CircleNeeds Manage Friends
Link

Starts the script below it when this happens.

whenFriendRequest
hatYour Nookara Circle
Link

Starts the script below it when this happens.

whenFriendAccepted
hatYour Nookara Circle
Link
getFriendRequests
reporterYour Nookara CircleNeeds View Friends
Link
getFriendStatus
reporterYour Nookara CircleNeeds View Friends
Link
getFriendCount
reporterYour Nookara CircleNeeds View Friends
Link
Currency 8

Nookara credits. Reading needs View Subscriptions, spending needs Spend Credits and always asks the player to confirm in a popup.

Your credit balance.

getBalance
reporterCurrencyNeeds View Subscriptions
Link

Asks the player to confirm, then sends credits.

transferCredits
commandCurrencyNeeds Spend Credits
Link

Starts the script below it when this happens.

whenBalanceChanged
hatCurrency
Link
getTransactions
reporterCurrencyNeeds View Subscriptions
Link

Recurring credits. PERIOD is weekly, biweekly, monthly, bimonthly or yearly.

subscribe
commandCurrencyNeeds Spend Credits
Link

Stops the recurring credits to that user.

cancelSubscription
commandCurrencyNeeds Spend Credits
Link
getOutgoingSubs
reporterCurrencyNeeds View Subscriptions
Link
getIncomingSubs
reporterCurrencyNeeds View Subscriptions
Link
Media Upload 6

Upload an image, audio or video. Needs Upload Media. MODE is wait or continue.

uploadImage
commandMedia UploadNeeds Upload Media
Link
uploadAudio
commandMedia UploadNeeds Upload Media
Link
uploadVideo
commandMedia UploadNeeds Upload Media
Link
uploadStatus
reporterMedia Upload
Link
lastUploadUrl
reporterMedia Upload
Link
uploadProgress
reporterMedia Upload
Link
File Picker 5

Let the player choose a file and read it.

openFilePicker
commandFile Picker
Link

Reports true or false.

fileWasSelected
booleanFile Picker
Link
selectedFileUri
reporterFile Picker
Link
selectedFileName
reporterFile Picker
Link
selectedFileSize
reporterFile Picker
Link
Login History 6

Sign-in history of the account. Needs View Sensitive Info.

Starts the script below it when this happens.

whenNewLoginDetected
hatLogin History
Link
fetchLoginHistory
commandLogin HistoryNeeds View Sensitive Info
Link
loginHistoryCount
reporterLogin HistoryNeeds View Sensitive Info
Link

Reports JSON as text. Use the JSON blocks to read it.

loginHistoryJSON
reporterLogin HistoryNeeds View Sensitive Info
Link
lastLoginDevice
reporterLogin HistoryNeeds View Sensitive Info
Link
lastLoginIP
reporterLogin HistoryNeeds View Sensitive Info
Link
User Lookup 13

Look up any user and read the result with the lookup blocks.

Starts a lookup. Read the answer with the lookup result blocks.

lookupUser
commandUser Lookup
Link
lookedUpUsername
reporterUser Lookup
Link
lookedUpRank
reporterUser Lookup
Link
lookedUpBio
reporterUser Lookup
Link
lookedUpPronouns
reporterUser Lookup
Link
lookedUpPfp
reporterUser Lookup
Link
lookedUpCountry
reporterUser Lookup
Link

Reports JSON as text. Use the JSON blocks to read it.

lookedUpJSON
reporterUser Lookup
Link
lookedUpGame
reporterUser Lookup
Link
lookedUpGameIcon
reporterUser Lookup
Link

Reports true or false.

lookedUpIsPlaying
booleanUser Lookup
Link
lookedUpPlaytime
reporterUser Lookup
Link

Reports JSON as text. Use the JSON blocks to read it.

lookedUpGames
reporterUser Lookup
Link
Badge Arcade 7

Arcade badges of the looked-up user.

Reports JSON as text. Use the JSON blocks to read it.

lookedUpUnlockedBadges
reporterBadge Arcade
Link
lookedUpUnlockedCount
reporterBadge Arcade
Link

Reports true or false.

lookedUpHasUnlocked
booleanBadge Arcade
Link
lookedUpUnlockedImage
reporterBadge Arcade
Link

Reports JSON as text. Use the JSON blocks to read it.

lookedUpProfileBadges
reporterBadge Arcade
Link
lookedUpProfileBadgeCount
reporterBadge Arcade
Link
lookedUpProfileBadge
reporterBadge Arcade
Link
Hyperfocus 2

Links to the Hyperfocus launcher.

hyperfocusDownload
reporterHyperfocus
Link
Achievements 6

Project achievements for the signed-in account.

grantAchievement
commandAchievementsNeeds View Basic Profile
Link
revokeAchievement
commandAchievementsNeeds View Basic Profile
Link

Reports JSON as text. Use the JSON blocks to read it.

getAchievements
reporterAchievementsNeeds View Basic Profile
Link

Reports true or false.

hasAchievement
booleanAchievements
Link

Starts the script below it when this happens.

whenAchievementUnlocked
hatAchievements
Link

Reports JSON as text. Use the JSON blocks to read it.

lastAchievement
reporterAchievements
Link
Nookara App Alerts 7

The notification feed.

Starts the script below it when this happens.

whenNotificationReceived
hatNookara App Alerts
Link
notificationCount
reporterNookara App Alerts
Link

The number on the notification bell, asked from Nookara each time (0 when signed out).

unreadNotificationCount
reporterNookara App Alerts
Link

Reports JSON as text. Use the JSON blocks to read it.

getNotifications
reporterNookara App Alerts
Link
clearNotifications
commandNookara App Alerts
Link
lastNotificationTitle
reporterNookara App Alerts
Link
lastNotificationBody
reporterNookara App Alerts
Link
Badges 5

The profile badges of the signed-in account.

Reports true or false.

badgesLoaded
booleanBadges
Link
allBadges
reporterBadges
Link
badgeCount
reporterBadges
Link

Reports true or false.

hasBadge
booleanBadges
Link
badgeInfo
reporterBadges
Link
Nookara Voice 26

Nookara Voice rooms and calls. Needs the Nookara Voice scope. Joining asks the browser for the microphone.

Enters a voice room. Asks the browser for the microphone.

joinVoice
commandNookara Voice
Link

Leaves the voice room.

leaveVoice
commandNookara Voice
Link

Switches the microphone on or off.

voiceMic
commandNookara VoiceNeeds Nookara Voice
Link
voiceThreshold
commandNookara Voice
Link

Reports true or false.

inVoice
booleanNookara Voice
Link

Reports true or false.

voiceMicOn
booleanNookara Voice
Link
voiceRoom
reporterNookara Voice
Link
voiceMyVolume
reporterNookara Voice
Link

Reports JSON as text. Use the JSON blocks to read it.

voicePeople
reporterNookara Voice
Link

Reports JSON as text. Use the JSON blocks to read it.

voiceSpeaking
reporterNookara Voice
Link
voiceUserVolume
reporterNookara Voice
Link

Reports true or false.

voiceUserSpeaking
booleanNookara Voice
Link
voiceSetVolume
commandNookara Voice
Link
voiceSetUserVolume
commandNookara Voice
Link
voiceMuteUser
commandNookara Voice
Link

Starts the script below it when this happens.

whenVoiceJoin
hatNookara Voice
Link

Starts the script below it when this happens.

whenVoiceLeave
hatNookara Voice
Link
voiceEventUser
reporterNookara Voice
Link

Invites that user into your voice room.

voiceCallUser
commandNookara VoiceNeeds Nookara Voice
Link
cancelVoiceCall
commandNookara Voice
Link

Starts the script below it when this happens.

whenVoiceAnswered
hatNookara Voice
Link
voiceCallResult
reporterNookara Voice
Link

Starts the script below it when this happens.

whenVoiceCalled
hatNookara Voice
Link

Reports true or false.

beingCalled
booleanNookara Voice
Link
voiceCaller
reporterNookara Voice
Link

Accept or decline an incoming call.

answerVoiceCall
commandNookara Voice
Link
Verbose 2

The last response and outcome of operations that report into shared reporters. Sign-in responses are never put here.

JSON of the last response of blocks that report into the shared reporters.

lastActionOutput
reporterVerbose
Link

Whether the last such operation completed.

lastActionSuccess
booleanVerbose
Link
Extension 1

The version of the extension this project loaded.

The version of the Nookara extension that is loaded.

extensionVersion
reporterExtension
Link
Hidden / legacy blocks 118

These blocks are not shown in the palette any more, mostly because a newer block replaced them. They keep working in projects that already contain them. Listed as plain text.

  • disconnect from instance [URL] opcode biDisconnectInstanceRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • connect to Ember server [URL] opcode biConnectRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • voice channel info for [CHANNEL] on instance [URL] server ID [SERVER] as JSON opcode biVoiceInfoIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • community details of instance [URL] server ID [SERVER] as JSON opcode biCommunityIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • join the community on instance [URL] server ID [SERVER] opcode biJoinIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • join request pending on instance [URL] server ID [SERVER]? opcode biPendingIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • leave the community on instance [URL] server ID [SERVER] opcode biLeaveIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • members of instance [URL] server ID [SERVER] as JSON opcode biMembersIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • roles of instance [URL] server ID [SERVER] as JSON opcode biRolesIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • my permission mask on instance [URL] server ID [SERVER] opcode biPermissionsIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • I have permission [PERMISSION] in channel ID [CHANNEL] on instance [URL] server ID [SERVER]? opcode biHasPermissionIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • [ACTION] role [ROLE] for member [USER] on instance [URL] server ID [SERVER] opcode biSetRoleIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • kick member [USER] from instance [URL] server ID [SERVER] opcode biKickIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • ban member [USER] from instance [URL] server ID [SERVER] opcode biBanIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • unban [USER] on instance [URL] server ID [SERVER] opcode biUnbanIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • pending join requests on instance [URL] server ID [SERVER] as JSON opcode biJoinRequestsIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • accept join request from [USER] on instance [URL] server ID [SERVER] opcode biAcceptRequestIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • deny join request from [USER] on instance [URL] server ID [SERVER] opcode biDenyRequestIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • create invite on instance [URL] server ID [SERVER] expires in [SECONDS] seconds (0 = never) max uses [USES] (0 = unlimited) opcode biCreateInviteIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • invites of instance [URL] server ID [SERVER] as JSON opcode biInvitesIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • delete invite [CODE] on instance [URL] server ID [SERVER] opcode biDeleteInviteIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • channels of instance [URL] server ID [SERVER] as JSON opcode biChannelsIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • channel ID named [NAME] in server ID [SERVER] on instance [URL] opcode biFindChannelIdRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • [PROP] of channel ID [CHANNEL] on instance [URL] server ID [SERVER] opcode biChannelPropIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • create [TYPE] channel [NAME] on instance [URL] server ID [SERVER] opcode biCreateChannelIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • rename channel ID [CHANNEL] to [NAME] on instance [URL] server ID [SERVER] opcode biRenameChannelIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • delete channel ID [CHANNEL] on instance [URL] server ID [SERVER] opcode biDeleteChannelIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • send [TEXT] to channel ID [CHANNEL] on instance [URL] server ID [SERVER] opcode biSendIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • reply [TEXT] to message [ID] in channel ID [CHANNEL] on instance [URL] server ID [SERVER] opcode biReplyIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • edit message [ID] to [TEXT] in channel ID [CHANNEL] on instance [URL] server ID [SERVER] opcode biEditIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • send [TEXT] as bot [TOKEN] to channel id [CHANNEL] on instance [URL] server ID [SERVER] with alias [NAME] and avatar [AVATAR] opcode biSendAliasIdsHidden from the palette. It still works in projects that already use it.
  • set alias of message [ID] in channel id [CHANNEL] as bot [TOKEN] on instance [URL] server ID [SERVER] to [NAME] and avatar [AVATAR] (blank name clears it) opcode biEditAliasIdsHidden from the palette. It still works in projects that already use it.
  • delete message [ID] on instance [URL] server ID [SERVER] in channel ID [CHANNEL] opcode biDeleteIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • react [EMOJI] to message [ID] on instance [URL] server ID [SERVER] in channel ID [CHANNEL] opcode biReactIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • remove my reaction [EMOJI] from message [ID] on instance [URL] server ID [SERVER] in channel ID [CHANNEL] opcode biUnreactIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • pin message [ID] on instance [URL] server ID [SERVER] in channel ID [CHANNEL] opcode biPinIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • unpin message [ID] on instance [URL] server ID [SERVER] in channel ID [CHANNEL] opcode biUnpinIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • pinned messages in channel ID [CHANNEL] on instance [URL] server ID [SERVER] as JSON opcode biPinsIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • messages in channel ID [CHANNEL] on instance [URL] server ID [SERVER] as JSON opcode biMessagesIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • messages in channel ID [CHANNEL] on instance [URL] server ID [SERVER] filters JSON [QUERY] opcode biHistoryIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • message [ID] in channel ID [CHANNEL] on instance [URL] server ID [SERVER] as JSON opcode biMessageIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • search [QUERY] in channel ID [CHANNEL] on instance [URL] server ID [SERVER] as JSON opcode biSearchIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • search [QUERY] in the whole community on instance [URL] server ID [SERVER] as JSON opcode biSearchAllIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • mark channel ID [CHANNEL] as read on instance [URL] server ID [SERVER] (up to message [ID], blank = latest) opcode biMarkReadIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • show me typing in channel ID [CHANNEL] on instance [URL] server ID [SERVER] opcode biTypingIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • who is typing in channel ID [CHANNEL] on instance [URL] server ID [SERVER] as JSON opcode biTypingUsersIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • when a message is sent in [CHANNEL] on instance [URL] server ID [SERVER] opcode biWhenMessageIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • alias name of last message on instance [URL] server ID [SERVER] (blank when none) opcode biLastAliasIdsHidden from the palette. It still works in projects that already use it.
  • upload file [FILE] named [FILENAME] for channel ID [CHANNEL] on instance [URL] server ID [SERVER] as attachment JSON opcode biUploadIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • import media from [MEDIA_URL] for channel ID [CHANNEL] on instance [URL] server ID [SERVER] as attachment JSON opcode biImportMediaIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • send [TEXT] with attachments JSON [ATTACHMENTS] to channel ID [CHANNEL] on instance [URL] server ID [SERVER] opcode biSendAttachmentsIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • send [TEXT] with file [FILE] named [FILENAME] to channel ID [CHANNEL] on instance [URL] server ID [SERVER] opcode biSendFileIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • bots on instance [URL] server ID [SERVER] as JSON opcode biBotsIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • create bot [NAME] description [DESCRIPTION] on instance [URL] server ID [SERVER] (shows the token once) as JSON opcode biCreateBotIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • remove bot [BOT] from instance [URL] server ID [SERVER] opcode biRemoveBotIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • add gallery bot [BOT] to the community on instance [URL] server ID [SERVER] opcode biAddGalleryBotIdsRedundant 1.8 connection or ID variant; original opcode retained as the primary block.
  • set Ember servers server ID [SID] layout options JSON [OPTIONS] opcode bfPutChatServersSidLayoutEmber client UI / media picker / notification / staff / administration feature.
  • notification preferences data opcode bfGetChatNotifyEmber client UI / media picker / notification / staff / administration feature.
  • set Ember notify [TARGET] options JSON [OPTIONS] opcode bfPutChatNotifyTargetEmber client UI / media picker / notification / staff / administration feature.
  • chat preference data opcode bfGetChatSettingsEmber client UI / media picker / notification / staff / administration feature.
  • update Ember settings options JSON [OPTIONS] opcode bfPatchChatSettingsEmber client UI / media picker / notification / staff / administration feature.
  • open chat destination data opcode bfGetChatOpenEmber client UI / media picker / notification / staff / administration feature.
  • GIF search results with filters [QUERY] opcode bfGetChatGifsEmber client UI / media picker / notification / staff / administration feature.
  • media catalogue data opcode bfGetChatMediaEmber client UI / media picker / notification / staff / administration feature.
  • create / send Ember media save options JSON [OPTIONS] opcode bfPostChatMediaSaveEmber client UI / media picker / notification / staff / administration feature.
  • Klipy media details for [KIND] item [SLUG] opcode bfGetChatKlipyKindSlugEmber client UI / media picker / notification / staff / administration feature.
  • create / send Ember media gif options JSON [OPTIONS] opcode bfPostChatMediaGifEmber client UI / media picker / notification / staff / administration feature.
  • remove Ember media [ID] opcode bfDeleteChatMediaIdEmber client UI / media picker / notification / staff / administration feature.
  • remove Ember media query JSON [QUERY] opcode bfDeleteChatMediaEmber client UI / media picker / notification / staff / administration feature.
  • emoji catalogue data opcode bfGetChatEmojisEmber client UI / media picker / notification / staff / administration feature.
  • emoji details for [EID] opcode bfGetChatEmojisEidInfoEmber client UI / media picker / notification / staff / administration feature.
  • emoji catalogue for community server ID [SID] opcode bfGetChatServersSidEmojisEmber client UI / media picker / notification / staff / administration feature.
  • create / send Ember servers server ID [SID] emojis options JSON [OPTIONS] file data URI [FILE] filename [FILENAME] opcode bfPostChatServersSidEmojisEmber client UI / media picker / notification / staff / administration feature.
  • update Ember servers server ID [SID] emojis [EID] options JSON [OPTIONS] opcode bfPatchChatServersSidEmojisEidEmber client UI / media picker / notification / staff / administration feature.
  • remove Ember servers server ID [SID] emojis [EID] opcode bfDeleteChatServersSidEmojisEidEmber client UI / media picker / notification / staff / administration feature.
  • supported bridge services opcode bfGetChatBridgePlatformsEmber client UI / media picker / notification / staff / administration feature.
  • linked communities on [PLATFORM] opcode bfGetChatBridgePlatformGuildsEmber client UI / media picker / notification / staff / administration feature.
  • linked community [GID] on [PLATFORM] opcode bfGetChatBridgePlatformGuildsGidEmber client UI / media picker / notification / staff / administration feature.
  • create / send Ember bridge [PLATFORM] guilds [GID] import options JSON [OPTIONS] opcode bfPostChatBridgePlatformGuildsGidImportEmber client UI / media picker / notification / staff / administration feature.
  • bridge configuration for community server ID [SID] opcode bfGetChatBridgeServersSidEmber client UI / media picker / notification / staff / administration feature.
  • set Ember bridge servers server ID [SID] options JSON [OPTIONS] opcode bfPutChatBridgeServersSidEmber client UI / media picker / notification / staff / administration feature.
  • update Ember bridge servers server ID [SID] options JSON [OPTIONS] opcode bfPatchChatBridgeServersSidEmber client UI / media picker / notification / staff / administration feature.
  • remove Ember bridge servers server ID [SID] opcode bfDeleteChatBridgeServersSidEmber client UI / media picker / notification / staff / administration feature.
  • set Ember bridge servers server ID [SID] channels channel ID [CID] options JSON [OPTIONS] opcode bfPutChatBridgeServersSidChannelsCidEmber client UI / media picker / notification / staff / administration feature.
  • CloudLink configuration for channel channel ID [CID] opcode bfGetChatChannelsCidCloudlinkEmber client UI / media picker / notification / staff / administration feature.
  • post Ember channels channel ID [CID] cloudlink reconnect opcode bfPostChatChannelsCidCloudlinkReconnectEmber client UI / media picker / notification / staff / administration feature.
  • my moderation inbox data opcode bfGetChatModmailEmber client UI / media picker / notification / staff / administration feature.
  • create / send Ember modmail read options JSON [OPTIONS] opcode bfPostChatModmailReadEmber client UI / media picker / notification / staff / administration feature.
  • staff moderation inbox data opcode bfGetChatModmailStaffEmber client UI / media picker / notification / staff / administration feature.
  • moderation conversation with [USERNAME] opcode bfGetChatModmailWithUsernameEmber client UI / media picker / notification / staff / administration feature.
  • create / send Ember modmail with [USERNAME] options JSON [OPTIONS] opcode bfPostChatModmailWithUsernameEmber client UI / media picker / notification / staff / administration feature.
  • sound catalogue data opcode bfGetChatSoundsEmber client UI / media picker / notification / staff / administration feature.
  • sound catalogue for community server ID [SID] opcode bfGetChatServersSidSoundsEmber client UI / media picker / notification / staff / administration feature.
  • create / send Ember servers server ID [SID] sounds options JSON [OPTIONS] file data URI [FILE] filename [FILENAME] opcode bfPostChatServersSidSoundsEmber client UI / media picker / notification / staff / administration feature.
  • update Ember servers server ID [SID] sounds [ID] options JSON [OPTIONS] opcode bfPatchChatServersSidSoundsIdEmber client UI / media picker / notification / staff / administration feature.
  • remove Ember servers server ID [SID] sounds [ID] opcode bfDeleteChatServersSidSoundsIdEmber client UI / media picker / notification / staff / administration feature.
  • link preview data with options [QUERY] opcode bfGetChatUnfurlEmber client UI / media picker / notification / staff / administration feature.
  • webhook configuration for channel channel ID [CID] opcode bfGetChatChannelsCidWebhooksEmber client UI / media picker / notification / staff / administration feature.
  • create / send Ember channels channel ID [CID] webhooks options JSON [OPTIONS] opcode bfPostChatChannelsCidWebhooksEmber client UI / media picker / notification / staff / administration feature.
  • update Ember hooks [WID] options JSON [OPTIONS] opcode bfPatchChatHooksWidEmber client UI / media picker / notification / staff / administration feature.
  • remove Ember hooks [WID] opcode bfDeleteChatHooksWidEmber client UI / media picker / notification / staff / administration feature.
  • create / send Ember hooks [WID] avatar options JSON [OPTIONS] file data URI [FILE] filename [FILENAME] opcode bfPostChatHooksWidAvatarEmber client UI / media picker / notification / staff / administration feature.
  • play Nookara sound [SOUND] opcode bfPlaySoundEmber client UI / media picker / notification / staff / administration feature.
  • bridge detail [PROP] for channel ID [CHANNEL] in server ID [SERVER] opcode bfCloudlinkStatusEmber client UI / media picker / notification / staff / administration feature.
  • bridge connection active in channel ID [CHANNEL] of server ID [SERVER]? opcode bfCloudlinkConnectedEmber client UI / media picker / notification / staff / administration feature.
  • when vMail received opcode whenMailReceivedPreviously hidden legacy feature; registration preserved.
  • send vMail to [TO] subject [SUBJECT] message [MSG] opcode sendMailPreviously hidden legacy feature; registration preserved.
  • legacy inbox entries opcode getMailListPreviously hidden legacy feature; registration preserved.
  • legacy inbox entry [N] text opcode getMailBodyPreviously hidden legacy feature; registration preserved.
  • delete vMail at index [N] opcode deleteMailPreviously hidden legacy feature; registration preserved.
  • delete all vMail opcode deleteAllMailPreviously hidden legacy feature; registration preserved.
  • call user [USER] opcode callUserPreviously hidden legacy feature; registration preserved.
  • when call received opcode whenCallReceivedPreviously hidden legacy feature; registration preserved.
  • call invitation details opcode callDataPreviously hidden legacy feature; registration preserved.
  • accept call opcode acceptCallPreviously hidden legacy feature; registration preserved.
  • set mic to [STATE] opcode setMicPreviously hidden legacy feature; registration preserved.
  • stop call opcode stopCallPreviously hidden legacy feature; registration preserved.

Errors

When a block fails it reports a red error in the project. The messages you will meet:

ErrorMeaning
Missing permission: this block needs the ... scope, but this project never asked for it.The permission integer of your project lacks a scope (for example Chat Messaging). Generate a new integer at nookara.cc/permissions.
Missing permission: this block needs the ... scope, which you chose not to allow when you logged in.The project asked, but the player unticked it. Run the sign-in block again and keep it ticked; the project should explain why it needs it.
... was disabled for your account by an administrator.The permission is on the token but a Nookara administrator switched that service off for the account. Signing in again does not help.
Not logged inSign in to Nookara first (the sign in to Nookara block, or login with token).
Invalid Ember server URL.The address is not a web address.
Ember servers require HTTPS (HTTP is allowed only on localhost).Use an https:// address, or no username and password inside it.
Unsupported Ember server.The address answered but is not an Ember server of this protocol version.
This server needs a local username and password.The server does not use Nookara login. Use the connect block with a username and password.
Invalid instance token response. / Invalid instance session response.The server or Nookara answered with something unexpected. Try again later.
not connected to URL: use the connect blockRun the connect block for that URL first, and use the same address everywhere. Nothing connects by itself.
server not connected or not found: use the connect block and the server ID / channel ID (or an instance-scoped block)An older ID-based block could not find the server or channel among the servers you are connected to. Connect first, then take the IDs from the JSON reporters (<code>servers of instance [URL] as JSON</code>, <code>channels of [URL] as JSON</code>).
Ambiguous server / channel ID / name / message ID: use the connect block and ...More than one connected server matched. Use the real server ID or channel ID, or an instance-scoped block that takes the address.
Ember server disconnected.The session ended (a 401 from the server, a ban, or you disconnected). The extension does not reconnect for you: connect again.
Community join request is pending approval.The server needs moderators to accept new members. Channel and member blocks work after approval.
This Ember server has no community yet.The server has no community to read or post in.
channel_not_foundNo channel has that name or id. Use channel id named [NAME] or channels of [URL] to check.
message_not_foundThe message id does not exist in that channel (reply and edit look it up first).
Invalid message id.Message ids are numbers.
Invalid Ember webhook URL.A webhook link looks like https://host/api/v1/webhooks/ID/TOKEN.
server_read_onlyA Nookara-hosted server that is read-only now (plan ended or the old chat). Writes are refused.
bad_signatureThe server rejected the message signature; the block retries once with a fresh key before failing.
other server errorsAny other error code the server sends is shown as it is. Rate limits, roles and bans are decided by each server.

Migrating old projects

Extension 1.9 runs everything on Ember servers, so projects made with 1.8 or with the older Nookara chat blocks keep working with a few differences to know about.

Signing

A signed message carries a proof that the Nookara account wrote it. When you ask for the Sign Messages scope (32768) in the permission integer and the player allows it (it starts unticked on the sign-in screen, so many players will not), messages sent with the blocks above are signed automatically on servers where you signed in with Nookara. The extension asks Nookara for the account signing key, keeps it only in memory, and signs the message text, channel, reply or edit link and attachments. Nothing changes for the project: the same blocks, no extra block. Without the scope, or with a local account, messages are sent unsigned: nothing fails and the server accepts them. Anyone can check a signature against Nookara's public keys; servers cannot require signatures.

Webhooks

A webhook is a link a server gives you for one channel. Anyone who has the link can post to that channel without signing in, which is exactly what you want for a game that posts scores. Create it in the channel settings of the server, copy the link, and paste it into the block send [TEXT] as webhook [WEBHOOK_URL]. Treat the link as a password: do not put one for an important channel in a project you share, because the project contains the link. The block sends only the text; the name and picture come from the webhook.

Three recipes

1. A chat box in a channel on chat.ikelene.net

Permission integer 2053 (Basic Profile + Project Auth + Chat Messaging). Scripts:

when green flag clicked
  sign in to Nookara for [My chat box] with permissions [2053]

when authenticated
  connect to instance [https://chat.ikelene.net]
  set [history] to (messages in channel [general] on [https://chat.ikelene.net] as JSON)

when a message is sent in [general] on [https://chat.ikelene.net]
  set [line] to (join (last message author on [https://chat.ikelene.net]) (join [: ] (last message text on [https://chat.ikelene.net])))

when [space] key pressed
  ask [Say something] and wait
  send (answer) to channel [general] on [https://chat.ikelene.net]

The author reported is the account id. Use members of [URL] as JSON to map ids to display names, or look the user up with the lookup blocks.

2. A bot that answers !ping

Use a separate account for the bot so people can tell it apart. The simplest is a local account on a server that allows sign-ups, or the bot's own Nookara account.

when green flag clicked
  connect to Ember server [https://example-bonfire.example.com] as [pingbot] password [your password]

when a message is sent in [general] on [https://example-bonfire.example.com]
  if <(last message text on [URL]) = [!ping]> and <not <(last message author on [URL]) = (my id on [URL])>> then
    reply [pong] to message (last message id on [URL]) in channel (last message channel on [URL]) on [URL]

The check against my id on [URL] keeps the bot from answering its own messages. A bot that must run all the time belongs in the Python library (bot tokens), not in a project: blocks run only while the project is open.

3. Posting a game score through a webhook

when I receive [game over]
  send (join [New score: ] (score)) as webhook [https://chat.ikelene.net/api/v1/webhooks/ID/TOKEN]

Create the webhook in a channel made for scores, so the link cannot reach the rest of your server. The player does not need to sign in to Nookara for this block.

Permission errors in the other groups

The rest of the extension is a Nookara account toolkit. Everything below needs the project to be signed in, and most groups need a scope in the permission integer. Without it the block throws Missing permission: this block needs the (name) scope. If an administrator has turned a feature off for the account the block throws (name) was disabled for your account by an administrator. Not signed in gives Not logged in. Use administrator has paused [SERVICE]? to check ahead.

The groups starting with Nookara API and Ember JSON hold one block per route. Bot developers get gallery blocks there too (bot gallery list and details, my bot gallery status, save listing, submit to and withdraw from the gallery, add ticket); see the Bot gallery section of the API guide. They send the same requests as the Nookara API guide documents, and report the raw JSON. That guide also has the complete list of Ember server routes, bots, backups and hosting for use from Python.

Related guides

More guides