Discord

Connect your venue's Discord server and XTech will keep its calendar up to date, reach your team wherever they are, and stop resident questions going unanswered when nobody's in-world. Everything here is optional — the system works exactly as before without it.

What it does

Five things, and you can use as few as you like:

Why it matters. Before this, the system could only reach someone inside Second Life. If your DJ wasn't logged in, a cover call for tonight sat in their offline messages until tomorrow. Discord reaches them on their phone.

Connecting your server

You need to be the venue owner, and you need permission to add a bot to the Discord server you're connecting.

  1. Go to Manage Venue → Discord Server and press Connect Discord server.
  2. Discord asks which server to add XTech to. Pick it and confirm.
  3. You'll come back to the dashboard, and the card will show your server's name.

The bot appears in your server under your venue's name, not "XTech" — so announcements read as coming from you.

One server, one venue. A Discord server can be connected to a single venue. If you run several clubs, each needs its own server.
Leaving. Use Disconnect here rather than removing the bot in Discord. Disconnecting lets us tidy up the events we published; if the bot is kicked first, it can no longer reach them and they'll sit in your calendar until someone deletes them by hand.

Choosing channels

Two, and both are optional:

AnnouncementsWhere event notices are posted. Anything you'd be happy for members to see.
Staff channelCover calls, the daily rundown and questions from residents. Should be a channel only your team can read.

When you pick a new channel we post one short confirmation into it, so you can see immediately that the bot is allowed to post there. Use Send test posts to check again later.

"XTech can't post in #channel yet." Almost always a private channel the bot hasn't been added to. In Discord, open that channel → Edit ChannelPermissions, add the XTech bot (or a role it has), and allow View Channel and Send Messages. Then press Save here again.

Pressing Save channels also refreshes the bot's name and its / commands in your server, so use it if either ever looks out of date.

Everything that reaches a person — cover calls, shift checks, reminders — needs that person to link their own Discord account. Each staff member does this themselves:

  1. My Profile → Discord → Link Discord account.
  2. Approve on Discord. We ask only for your username and account ID — never your email, your servers, or your messages.
  3. We send a confirmation direct message so you can see straight away that it works.
Always your choice. A venue can't require it. If you don't link, everything still reaches you in Second Life exactly as before — linking just means it also reaches you when you're not logged in.
"Discord wouldn't deliver our message." Discord bots may only message people who share a server with them. Join the venue's Discord, and in that server's privacy settings allow direct messages from server members. Then press Send a test message.

The event calendar

Public events are published to your server's Events tab automatically — by default the next 7 days, up to 10 events, refreshed every 15 minutes. Change the time of an event and Discord follows; skip a night and it's cancelled there too.

Cover calls

When a cover call goes out, anyone eligible who has linked Discord gets a direct message with a Claim this cover button. One press and the shift is theirs — no login, no browser.

Your staff channel sees the whole story: the call opening, who claimed it, and whether it lapsed unanswered.

It frees up in-world capacity too. Second Life limits how fast a bot can send messages, so a large staff roster takes several rounds to reach. Everyone who has linked Discord is reached instantly and without using any of that — which leaves more of it for the people who haven't.

Staff checks

A Staff check is a reminder type that asks rather than tells. Add one to an event under Reminders — the + Staff check 2d button adds one two days ahead.

Whoever is assigned gets I'll be there / I can't make it buttons on Discord, or a one-click link in-world if they haven't linked. Their answer shows against that date on the Events page.

Saying "I can't make it" opens a cover call immediately — which is the real point. Someone who knows on Tuesday that they can't do Friday no longer has to track down a manager in-world; the call goes out with days left to fill it.

Don't ask every night. Put a Staff check days ahead, on events where it matters. On a nightly residency it becomes noise, people stop answering, and then the roster looks confident while meaning nothing.

The daily rundown

Under Manage Venue → Notifications → Daily rundown, pick an hour and your managers get one summary of the night: who's on, who's confirmed, unfilled slots, and any cover calls still open with their deadlines.

It goes to your staff channel if you have one, otherwise direct to each manager. Nothing is sent on a quiet night — a daily "nothing to report" is how a summary becomes the thing everyone ignores.

Questions from residents

When a resident IMs your in-world bot something the FAQ can't answer, the bot offers to pass it on. If they say yes, it appears in your staff channel with a Reply button — press it, type an answer, and it arrives as an instant message from your bot, signed with your name.

It needs a staff channel set, and nothing else. Any staff member who can see the channel can answer; they don't need a linked account.

The resident chooses. We ask before passing anything on, and relay only if they agree — their message reaches your team because they wanted it to, not because our FAQ came up short.

Slash commands

Anyone in your server can use these:

/nextThe next event on — or, if you're venue staff with a linked account, your next shift. A night you handed over drops off; one you covered shows up. Not booked? It gives you the venue's next night instead.
/scheduleThe next few events. Staff see the calendar as it really is — private events included, and any night still needing cover flagged rather than quietly left out.
/askAsk about the venue — answered from the same FAQ your in-world bot uses, so both give the same answer.
/helpWhat the bot can tell you about.

Replies are only visible to the person who asked — which is what makes it safe for the same command in the same channel to answer each person about their own shifts.

The bot can't read your messages — including replies to its own DMs. It only ever sees a slash command or a button somebody pressed. So every DM it sends says so, and carries a What's on next? button for the question people naturally reply with. If you type into the DM, nothing is lost — but nothing answers either.
Staff is decided by the venue, not by Discord. Being a server admin doesn't make you venue staff, and it never grants the staff view: the two are set by different people. Linking is what connects the two, and it stays entirely optional — without it you simply get the public answer.

Privacy & permissions

The permissions we ask for are the minimum to do the above: create events, post in the channels you choose, use its own nickname, and pin. It cannot kick, ban, manage roles, or read message history.

If something isn't working

No events in DiscordCheck the events are Public, start within the publishing window, and don't have an open cover call. The calendar refreshes every 15 minutes.
Posts stopped appearing in a channelIts permissions probably changed. Press Send test posts — it names the channel and what to fix.
Someone never gets direct messagesThey need to be in the server, allow DMs from server members, and have linked their account. Send a test message on My Profile confirms it in one press.
The bot shows the wrong venue name, or / commands are missing Press Save channels — it re-applies both.
Buttons say "This interaction failed"Report it. That's ours, not yours.