/help
The commands you can use. It only lists the ones your tier and capabilities allow.
Every command Pixel answers in Discord, grouped by who can use it. Each card shows the lowest tier it needs, how it replies, and any capability it needs on top.
Required options end in a colon, like device:. Optional ones are in brackets, like [topic:]. Discord lists the options as you type.
The commands you can use. It only lists the ones your tier and capabilities allow.
Whether Pixelbar is open right now, and for how long. Pixel reads the switch in the space through the SpaceAPI.
What's coming up at Pixelbar, from the Discord server's scheduled events. Times are in the space's time zone.
Short answers about Pixelbar: where it is, visiting, membership, the house rules and how to get in touch. Each answer links to the full page on pixelbar.nl.
Searches Pixelbar's wiki and lists the matching pages as links, with a button to see every result on the wiki. Words match whole words first, then as the start of a word, so clean finds Cleaning. Without a query, or when nothing matches, it replies privately with buttons for the wiki's top pages: the ones its main page links to.
What Pixel knows about you: your tier and your Discord ID.
Checks that Pixel is alive.
Sends a message to Pixel's maintainers, with your Discord name and ID so they can follow up. Your message and username may be made public, so don't include anything private. You can send a few at once, then one every ten minutes. What Pixel keeps is in the privacy notice.
A little QuakeNet nostalgia. Pixel keeps the original Fishbot replies, including their old-school language. These commands answer publicly; help and unknown phrases are private. Pixel only answers slash commands and does not read the channel's conversation.
Try a classic Fishbot phrase. Matching ignores case and extra spaces, but requires the whole phrase. Fish go m00!
Slap someone around a bit with a large trout. Purely theatrical.
Feed Fishbot hundreds and thousands.
Give Fishbot a friendly stroke.
Sneak a cookie away from Fishbot.
For paid members. Commands marked Friend also work with a friend membership.
Posts the closing-time reminder in the closing-time channel. Pixel also posts it by itself when the space closes.
Lights, switches and doors in the space. You only ever see the devices you're allowed to see, and you only get buttons for what you may change. Pixel checks again on every press, whatever the panel showed.
Opens the Home Assistant devices you may see, with their state. Changing one needs the capability for that kind of device, or ha-admin. Doors are for members only, and only lock and unlock.
The list groups the devices by kind, with each one's state as Home Assistant reports it right now. Pick one from the menu to see more, or to change it.
You used /ha

PixelApp
Devices
Choose a device below to see more, or to change it.
Only you can see this · Dismiss message
A device shows its live state, when it last changed and a few details for its kind. There's a button for each thing you may do to it. The one it's already at is greyed out.
You used /ha

PixelApp
example-light
The light over the workbench
Only you can see this · Dismiss message
Pressing one sends it once, then says what really happened above the device's fresh state: done, already there, still working, nothing changed, or that it couldn't confirm. Pixel never sends it again by itself.
You used /ha

PixelApp
Done
example-light is now off (it was on).
example-light
The light over the workbench
Only you can see this · Dismiss message
A door has Lock and Unlock, for members with ha-doors or ha-admin. Pixel never unlatches a door. While admins have switched door control off, a door shows no buttons and says why.
You used /ha

PixelApp
example-door
The front door
Only you can see this · Dismiss message
Messages, polls and attendance polls that Pixel posts in a channel, once or on a repeat. These need the schedule-posts capability, and you can only schedule in channels you can post in yourself. Times are in Europe/Amsterdam.
Opens your scheduled posts. Everything else is buttons, menus and forms in Pixel's reply, so there's nothing to remember. The buttons stop working after 15 minutes or when Pixel restarts: run /schedule again.
Every scheduled post is in the menu, soonest first, with its channel, its next post and how often it repeats. Pick one to see it, or make a new one.
You used /schedule

PixelApp
Scheduled posts
3 scheduled · 2 yours · 1 paused
Choose one to see what it will post, change it or delete it.
Times are in Europe/Amsterdam.
Only you can see this · Dismiss message
New message, New poll and New attendance poll open a form. When is a day, a time or both, such as wed 1900, 14 oct 19:00, tomorrow 9am, now or now+1h. A poll's form asks for the question and its answers, one per line (2 to 10), instead of the message. Date tokens like {{date}} are filled in when it's posted.
New message
Channel *
Where to post it. You need to be able to post there yourself.
#general▾When *
In Europe/Amsterdam. A day, a time or both.
wed 1900 · tomorrow 9am · 14 oct 19:00 · now+1hRepeat *
Message *
What to post. Markdown works. {{date}} and {{date+2}} fill in when it's posted.Nothing is saved yet. Pixel shows a draft: the time it understood, and exactly what it will post. Settings that only sometimes apply are on the draft, and only when they do: the days for a weekly repeat; how long a poll stays open, whether it allows several answers and its daily Reminders; and Pings, only where you could ping everyone yourself. If something's wrong, the draft says what and Edit details opens the form again with what you typed.
You used /schedule

PixelApp
Pizza night tonight! Doors open at 19:00.
New message
Nothing is saved until you press Schedule.
#general · first post Wed 14 Oct 2026, 19:00 (Europe/Amsterdam) · weekly on Wednesday
Only you can see this · Dismiss message
Schedule saves it and shows it. A schedule shows what it will post next and its next few times. If you made it, you can Edit it (the same form and draft, with Save changes), Pause or Resume it, and Delete it (Pixel asks first). Someone else's is read-only.
You used /schedule

PixelApp
Pizza night tonight! Doors open at 19:00.
Pizza night tonight! Doors open at 19:00.
Next post: Wed 14 Oct 2026, 19:00 (Europe/Amsterdam).
Made by you.
Above is what it will post next time, with dates filled in. Pings don't fire here.
Only you can see this · Dismiss message
An attendance poll is for "who's coming?". A Discord poll always ends by announcing a winner ("the winner is No with 30%"). Pixel counts an attendance poll itself, so it ends with how many are coming instead. Its form asks for the question and 1 to 5 answers, one per line, such as Coming and Not coming, or just I'm coming. Each answer becomes a button.
On the draft, choose which answers count as coming (the first one does to begin with) and how long it's open. Colours picks each answer's button colour: grey (the default), blue, green or red. Results picks a channel for the totals: the totals so far at a time on the day it closes (say 17:00 for a poll open until midnight), and the final totals when it closes. You write what they say, with {{count}}, {{names}}, {{question}}, {{link}} and the date tokens, for example Poll is closed - {{count}} people are coming to the Pixelbar! In the poll's own channel they're posted as replies to the poll; in another channel, use {{link}} to point back to it. Leave Results off and the totals only show on the poll. Reminders work as for a poll.
You used /schedule

PixelApp
🗳️ Who's coming on Friday?
Coming: 3 · Ada, Sam and Kim
Not coming: 1 · Robin
Open until Fri 6 Nov 2026, 23:59. Press an answer to pick it, and again to take it back.
Only you can see this · Dismiss message
Anyone in the server can answer, once: pressing another answer switches, and pressing yours again takes it back. Pixel tells you privately what you picked. Your name shows on the poll and in its results, like a Discord poll's voters. The buttons keep working when Pixel restarts, and go when the poll closes.
Getting a parking spot at the gate. These need the parking capability. Every reply is private, and every booking ends at 23:59.
Opens your parking panel. Everything else is buttons. /park for: books straight away, for when you're at the gate and know how long.
When you're not parked, pick how long. The lengths come from the parking settings, and ones that won't fit right now are greyed out. Another length… takes any other. Pixel gives you a spot that's free for that whole time, opens the gate and says where to park: Pixelbar's own spot first, then the borrowed spot that fits most tightly. If nothing fits, the gate stays shut and Pixel offers the longest stay that would. Every panel shows who's in which spot.
You used /park

PixelApp
Parking
How long do you need? Pixel finds a spot that's free for that whole time, opens the gate and says where to park.
Free
ours (Next to the gate): free · open until 23:59 (13h 59m left)
Taken
neighbour-1: taken by Another member since 09:30, until about 11:30 · open until 14:00 (4h left)
Only you can see this · Dismiss message
Once you're parked, the panel says where. Open the gate opens it again, if it didn't open or you need it again. Leave frees your spot when you go. The Stay … longer buttons only offer what fits before the spot closes, or 23:59.
You used /park

PixelApp
Parking
Park in ours (Next to the gate). It's yours until 12:00.
The gate is opening.
I'll DM you 15 minutes before it ends (that needs DMs from server members on).
Press Leave when you go.
Free
neighbour-1: free · open until 14:00 (4h left)
Taken
ours (Next to the gate): taken by Example member since 10:00, until about 12:00 · open until 23:59 (13h 59m left)
Only you can see this · Dismiss message
If someone else is in your spot, Someone's in my spot shows what Pixel will do before it does it. If another spot is free for the rest of your time, it moves you there. If none is, it ends your booking and reports it to the board. Either way your spot is closed until the end of the day, so nobody else is sent there.
You used /park

PixelApp
Parking
Sorry about that. neighbour-1 is free for the rest of your time, until 12:00.
Move there, and I'll close ours until 23:59 and tell the admins.
Only you can see this · Dismiss message
Pixel DMs you 15 minutes before your time is up, saying how much longer you could stay, and ends your booking 5 minutes after it if you haven't left or stayed longer, so keep DMs from server members on.
The building's doors, through OpenR. This needs the openr capability. The parking gate isn't here: /park opens it.
Opens one of the building's doors. Pixel asks once: if it doesn't open, try again in a moment. Refused while admins have switched door control off.
Sets whether Pixelbar shows as open or closed. This needs the spacestate capability.
Tells the space's state API that Pixelbar is open or closed. /status and the open and closed announcements follow once the change shows up on SpaceAPI. If the API doesn't accept it, Pixel says nothing changed.
For Pixel's operators. Every reply is private, and every change is recorded. How to use them is in the runbook.
Opens the admin panel: Pixel's health, with sections for people and their access levels, capabilities, Discord roles, announcements, the closing-time reminder, doors, OpenR and parking.
/admin has no subcommands or options. Everything is buttons, menus and forms in its reply. The first panel shows Pixel's version, where it runs, its uptime, how many admins, members and friends there are, and the state of Discord roles, Home Assistant, OpenR and door control. From there:
Changes that are hard to undo ask first. Changes to a person's level or capabilities, and to what a level gets, ask for an optional reason for the audit log. ← Admin in every section goes back to the first panel.
One person's level, capabilities and Discord roles. Look someone up… asks who, then shows their level, where it comes from, what they hold and their roles.
Every capability, what it is for, how many people hold it and which levels get it. What friends get and What members get show what a level grants, with menus to grant a capability to everyone at that level, or take it back. What friends get, members get too. A level change DMs nobody.
Whether Pixel's levels are mirrored to Discord roles. Sync everyone sets the roles to match Pixel's lists for everyone in them. People who hold a role but aren't listed aren't touched.
The channels where Pixel announces that the space opened or closed, and whether each is posting. Add a channel… picks a channel you can post in and a style:
Stop announcing in… removes a channel. Changes take effect at once.
The reminder Pixel posts when the space closes, and by /closing-time. Change the message… opens the text, prefilled with the saved one. Markdown and date tokens like {{date}} work. With no message set, Pixel posts its own. It's posted in public, so never put door codes or other secrets in it.
Door control from Pixel, on or off. Switch door control off… (Pixel asks first) stops every door action from Pixel at once, for everyone: Home Assistant's doors, OpenR's doors and the parking gate. Switch door control on brings it back. It stays as set across restarts. It doesn't lock a physical door.
Only shown where OpenR is set up. Whether Pixel is logged in to OpenR, and each door's status.
Every spot, whether it's open, until when, and who's in it, 25 spots to a page.
/park offers.One spot's panel has:
2h or rest of day), or until the spot closes if you leave it empty. They get a DM, and a booking they had elsewhere ends. Pixel won't take a spot from someone still booked into it unless you go ahead when it asks.How to use these day to day is in the runbook.