DOCUMENTATION
What each part does, how to set it up, and what your members see.
Lunar is in closed beta, so your Discord account needs to be approved before you can add her.
Once a server's owner is approved, the server's administrators get its dashboard too, and anyone else gets what you give them under Access control. They don't need approving by us. Adding Lunar to more servers stays with approved accounts.
If Lunar is added to a server whose owner isn't approved yet, she waits there quietly. The server shows under Waiting for approval in the picker, and her commands reply that the server is waiting.
The Getting started page lists five things most servers set up first: level roles, a ticket panel, a welcome message, an automod rule and a reaction menu. Each one says whether this server has it yet and opens the page where you set it up.
Everything Lunar does is set up here. Pick a server at the top and the sidebar shows what you can change in it.
The server picker remembers its choice per browser tab, so two tabs can be on two different servers. Your servers are the ones you manage. Using Lunar lists servers where Lunar is in but you don't have dashboard access; someone there can give it to you under Access control.
Nothing changes the moment you click. Once you edit something, a bar appears at the bottom and holds your edits until you save them all or throw them away.
A few things save on their own: reaction menus and automatic roles have their own Save and Post buttons, Forms has its own bar, and Access control saves each person's access when you press Save access. If you switch servers with unsaved edits, the dashboard asks before throwing them away.
Use Search settings in the top bar. Type what you're after, like "channel rules" or "welcome", and jump straight to it. Only pages you can open show up.
Some settings carry a mark. is Premium and is Premium+. Click a mark to see what it unlocks.
The sun and moon button in the top bar switches themes. Account settings also has a switch for smooth animations.
Members earn XP for chatting and for time in voice, climb levels, and pick up roles on the way. You decide how fast, where it counts, and what each level is worth.
Open advanced lets you write your own curve, XP per message and cooldown, with a live preview of what each level costs.
Add only the channels you want to treat differently. A rate of 1 is normal, 0 means the channel earns nothing, and anything above 1 is worth more. Flat rates work on every plan.
Tiered changes the rate the longer someone keeps going in one stretch: by messages in a text channel, by minutes in a voice channel. Going quiet for 30 minutes starts the count again. Voice channels also have Alone in the channel, which lowers or stops XP while nobody else is there.
Pick a level and a role, and Lunar hands the role out the moment someone reaches it, from text or voice. Choose whether members keep all the roles they've earned or hold only the highest. Level 0 gives a role to everyone as they join.
Level-specific roles are held only at exactly one level and leave once the member levels past it.
Members with one of these roles earn more, on text and voice. Multipliers don't stack: someone with several gets the biggest one.
Your server didn't start the day Lunar joined, so neither should its levels. Backfill counts the messages members sent before she arrived and gives them the XP, once.
Voice history covers time in voice. Observe watches voice for 14, 30 or 60 days and then gives each member voice XP for their past days at the pace they kept. Import reads the join and leave posts another bot left in a log channel, often going back years.
Lunar reads your last 30 days and suggests settings that fit: whether voice and chat deserve separate levels, how much voice should count, and a pace (relaxed, standard or fast) with how long the top members would take to reach level 10 and level 50. Nothing changes until you press Apply these settings, and XP members already have stays.
Every server gets a public leaderboard at thelunarbot.com/<server id>/leaderboard, with a podium, everyone's level and XP, and a profile card per member. Members can pick their card's background. In Discord, /rank shows a member's card and /leaderboard shows the top ten.
Give or take XP, set an exact total, or put a member on a level, from A member's XP on the XP settings page or with /xp. It applies at once, level roles follow within seconds, and every change is written down with who made it.
Analytics, tickets, temporary voice channels, counters, fun commands, AI chat, the status checker and your own slash commands.
How the server is doing, against the period before. Pick a range: 7 or 30 days on every plan, 90 days and 6 months , a year .
The filter next to Everyone narrows the member numbers to holders of some roles, or hides them. It counts the roles members hold now. Set the server's time zone under Server time so days and the heatmap line up with your community.
Role groups compare roles with each other: a pie per group, one slice per role, such as your level roles or your region roles. They only ever show counts, never who holds what. Lunar asks you to read and accept a short note on privacy before your first group.
Members click a panel and get a private channel with your staff. Set it up in this order:
ticket-0001 or ticket-username), and what closing does.When a ticket closes, Lunar can lock it and keep it, delete it after a delay, or ask the member to confirm they're done first. Tickets can also close themselves after a quiet spell. The whole conversation, edits and deletions included, stays on the Transcripts tab, and a summary goes to your transcript channel.
Pick a voice channel as a lobby. Anyone who joins it gets a voice channel of their own and is moved into it, and the channel goes away once it empties. You can have up to 10 lobbies.
Choose the name ({user} is the owner's display name), a user limit, whether it starts open, locked or hidden, and which controls the owner gets: rename, limit, lock, hide, permit or deny someone, remove someone, hand it over, let others claim it, and delete. The owner gets a panel of buttons in the channel and can use /voice too.
A voice channel nobody can join, with a live number in its name. Count members, bots, who's online, who's in voice, holders of a role, boosts and boost level, roles, channels, emoji, stickers, progress toward a member goal, or show today's date. You write the name and put {value} where the number goes, emoji included. Up to 15 counters, updated as often as every five minutes.
/hug, /headpat, /boop, /wave, /highfive, /poke, /punch and /kill post a gif with "@you hugs @them". Nobody gets pinged. Turn each one on or off, and switch any of them to your server's own gifs by pasting links, one per line.
Mention Lunar and she replies in the channel, in a personality you write. Choose the channels she answers in, who can talk to her, how long she waits between replies to the same person, what your roles mean, and notes about your server she can draw on. Her replies never ping anyone, and each one ends with a small line saying it's an AI reply and may not be accurate.
A server on Premium+ gets up to 1,500 replies a month and 100 a day. AI chat is off until you switch it on.
Connect a game server, app, site or bot, and Lunar keeps a live status message in your Discord and says when it goes down. See Status checker and API.
Your own slash commands: a name, what the picker says it does, and the reply. Add a keyword and the same reply fires whenever that word turns up in chat.
Replies can use {user}, {user.mention}, {server}, {channel}, {membercount}, {arg} (what they typed after the command) and {random:yes|no|maybe}. A reply can be an embed, visible only to the person who ran it, limited to some roles and channels, and given a cooldown. Commands appear in Discord as soon as you save. Ten commands on every plan, twenty .
Staff applications, ban appeals, reports and sign-ups, answered on a web page by people signed in with Discord, and read in your dashboard.
Each template comes with its own questions and sensible rules, and everything stays editable.
Up to 40 questions, split into parts if you like. Question types: short answer, paragraph, choice, checkboxes, dropdown, stars, number, a 1 to 10 scale, date, someone from the server, a channel, an agreement, and a file. Try it yourself opens the form as a member sees it.
A file question takes a link on every plan, which staff can open in a safe preview. With Premium , people can attach files up to 10 MB and Lunar keeps them.
Pick a review channel and Lunar posts a short notice there for each response; the answers themselves stay on the dashboard. Staff can also hand a form out inside a ticket with /forms send, as a link only the person who opened the ticket can use. Responses land in the Responses inbox, where staff can grade them, write notes, and accept or deny.
Every form has its own link on forms.thelunarbot.com. People sign in with Discord to answer, and nothing gets posted to their account. Make a new link at any time and the old one stops working. Add your own banner, colour and intro under Branding .
Welcome and leave messages, stream alerts, birthdays and events.
Turn on a welcome message, pick its channel, and write it in your own words. {user} pings the new member, and {username}, {server} and {membercount} fill in the rest. Leave messages work the same way.
Switch on Show a card image for a picture with the member's avatar, your heading and a line of text, on one of six backgrounds or a random pick of the ones you choose. Send it as an embed if you'd like a bordered block instead of plain text.
With logging on, Lunar notes which invite each member used and who made it, and shows it on their join in the Members log. When she can't tell for sure, the join is marked ambiguous rather than guessed.
Watch up to 25 Twitch, YouTube or Kick channels. Lunar posts the moment one goes live, with the title, category, viewers and a thumbnail, and can ping a role. A YouTube channel can announce new videos too. Write the message with {name}, {title}, {url}, {game}, {viewers} and {role}.
Members add their birthday, day and month only, on their account page, and choose whether servers may announce it. Pick a channel, a message and a role for the day, and set the time zone the day starts in.
Add an event on the dashboard, or follow up to five calendars you already keep (Google, Apple, Outlook, any .ics link). Lunar posts each event with Going, Maybe and Can't make it buttons, plus add-to-calendar links. Unless you turn it off, she also adds each one to Discord's own Events tab.
Reminders go out at the times you pick, one day and one hour before by default, and ping everyone who said they're going. The host gets a message before the start. Members see every time in their own time zone. Test a post in a staff channel first if you'd like to check it, and approve it when it looks right.
Each member also has a feed link under Your account that any calendar app can follow.
Automod, spam detection, Tripwire, cases, appeals and logs.
Rules that catch messages by keyword, and by pattern with Premium , then delete them, warn, time out, kick, temp ban or ban. Start from a template: profanity, Discord invites, common scams, walls of caps, repeated characters, @everyone abuse, or glitch text.
Keywords match anywhere in a message, so a short word also matches inside longer ones. Members with Manage Server and the roles you exempt are never caught. The heaviest action you tick becomes the member's case.
Off until you switch it on. Catches someone posting across many channels at once, flooding, repeating themselves, or mass mentions. By default that's 5 messages in 5 seconds, 6 channels in 30 seconds, the same message 3 times, or 5 mentions in one message. Choose what happens: delete the messages, warn, time out (5 minutes by default), kick or ban.
Thresholds that act before a human can. A wire counts one kind of damage per person in a window: giving a role a dangerous permission, deleting channels or roles, banning or kicking members, creating webhooks, or adding a bot. Past the threshold, Lunar tells you, puts the permission back, takes the person's roles off, or bans them. Their roles are written down so you can hand them back in one press.
A raid rule watches how fast people join and puts the server in a lockdown that lifts itself. The gate holds or turns away accounts younger than you allow. The server owner is never touched, and neither is anyone you exempt.
Every warn, timeout, kick and ban is a case with a code, a reason and a history per member, from the dashboard or from commands. The member gets a notice with the reason, and an appeal button if you've set one up. Moderate anonymously and the notice leaves your name off; the dashboard still records who did it.
Attach evidence as links on every plan. With Premium you can upload pictures to a case and Lunar keeps them. Bans and kicks done outside Lunar are added as cases too.
Add an Appeal button to the notices members get, linking wherever you take appeals. A ban appeal form is a good fit.
Messages, members, invites, roles, channels, voice, emoji, server changes and moderation, each searchable on the dashboard. Pick a channel for a category to also get a post in Discord. Edited and deleted messages show their old text, for messages Lunar saw.
Turn this on and your log contents can be read only with a passphrase you choose. Not by us, and not by anyone running Lunar. Only the server owner can turn it on, and other staff get their own passphrase once the owner approves them.
Run Lunar under your own bot's name and picture. Make an application on Discord's developer site, paste its token, and invite it with the link Lunar gives you. It takes over within about a minute, and you can set its status line.
Let members pick their own roles, and keep roles in step with each other on their own.
Lunar posts a message where members react with an emoji to get a role, or she adds the reactions to a message you already posted and never touches your words. Up to 20 emoji per menu.
An emoji, or the whole menu, can require members to have (or not have) certain roles first. Saving keeps the menu on the dashboard; press Post to send it to Discord.
Give a role to everyone, including everyone who joins from now on, or only to members who hold certain roles. Tick Remove the role when the condition no longer matches and Lunar takes it back when they stop qualifying. Rules apply as roles change; run /syncroles to apply them to everyone at once.
Every slash command Lunar ships with. Most of what they do is also on the dashboard.
/rankA member's rank card: level, XP and how far to the next level/leaderboardThe top ten in the server/levelHow much XP each level takes on this server/xpGive, take or set a member's XP, or put them on a levelMANAGE SERVER/scanCount past messages for backfill, up to a year back, once a weekMANAGE SERVER/leveling backfillSee the XP members would get for past messages, then grant it onceMANAGE SERVER/recommendLeveling curves that fit how your server talksMANAGE SERVER/synclevelsHand out level roles again from everyone's current levelADMINISTRATOR/banBan someone, for good or for a while (duration: 3d), with optional evidenceBAN MEMBERS/unbanLift a ban and close its caseBAN MEMBERS/kickKick a member and open a caseKICK MEMBERS/timeoutTime a member out, up to 28 daysMODERATE MEMBERS/untimeoutLift a timeout and close its caseMODERATE MEMBERS/warnWarn a member and record itMODERATE MEMBERS/caseView, revoke or fill in a case by its code or numberMODERATE MEMBERS/moderationsBrowse someone's cases, newest firstMODERATE MEMBERS/purgeDelete up to 100 recent messages, optionally from one person or containing a phraseMANAGE MESSAGES/slowmodeSet or clear slowmode on a channelMANAGE CHANNELS/lock /unlockStop everyone posting in a channel, and let them againMANAGE CHANNELS/syncrolesApply automatic roles to everyone nowADMINISTRATOR/removerolesTake a role from every memberADMINISTRATOR/voiceControl your temporary voice channel: name, limit, lock, hide, permit, deny, kick, transfer, claim, delete/statusIs it up, and who's on, for services connected to the status checker/eventsWhat's coming up in this server. Add share to post the list for everyone/forms sendPost a form link only one person can use, the person who opened the ticket by defaultSTAFF/tickets force-closeClose this ticket and remove it straight awaySTAFF/statsMessages, members who chatted and voice minutes over the last 30 daysMANAGE SERVER/configureChange a setting from Discord: leveling, spam, Tripwire, greetings, tickets, AI chat, birthdays, events, modulesMANAGE SERVER/voicechannelVoice XP rules for a channelMANAGE SERVER/pingCheck that Lunar is answering/lunar data showSee how much Lunar holds about you/lunar data deleteDelete your own Lunar records in every server, for good/hugHug someone/headpatPat someone on the head/highfiveHigh five someone/boopBoop someone/pokePoke someone/waveWave at someone/punchPunch someone, playfully/killDramatically take someone outStaff commands also follow the access you give on the dashboard, so someone with Manage Server but no access to XP can't use /xp.
Decide who can see and change each part of the dashboard, so a moderator can handle cases without touching your leveling curve.
The server owner always has everything. Administrators do too, unless you switch off Administrators get in automatically. Everyone else gets exactly what you give them, by role or by name.
Access follows Discord: take a role away from someone and their dashboard access changes within seconds. Mass infractions need their own tick, and only administrators can hold them.
At the bottom of Access control, only the server owner sees every change staff made on the dashboard and with Lunar's staff commands, newest first, including attempts that were refused. Each entry is sealed as it happens, so nobody can quietly change or remove one, and Download saves the whole record in a form anyone can check.
You also get a Discord message when someone else changes access, logs, encryption, automod, Tripwire, spam protection or which systems are on. Turn that off in the same place.
Your account page holds what's about you rather than a server: your plan, birthday, calendar, privacy and data.
Add your birthday, day and month only, never the year. It's announced only where you allow it: turn on Let servers announce it, or choose Announce or Silent per server.
Your own feed link puts events from your servers into Google Calendar, Apple Calendar or Outlook. Choose everything, or only the events you said you're going to. Anyone with the link can read it, so press New link if it gets out.
Hide me on public leaderboards keeps your rank and XP but shows you as Anonymous, everywhere or per server.
Use Erase my data on your account page, or /lunar data delete in Discord. It removes your XP and levels, birthday, preferences, the copies of your messages Lunar kept, and your ticket messages, across every server. Use /lunar data show first to see how much there is.
It doesn't remove records that belong to a server, such as moderation cases, logs and staff activity, or purchase records we have to keep. The privacy policy has the details.
A server owner can erase everything Lunar holds for their server from the account page: levels, cases, tickets, logs, settings and encryption keys. It happens at once and can't be undone.
Connect anything that has code to your Discord: a FiveM, RedM or Minecraft server, an app, a website, a bot. It reports in; Lunar shows its status, says when it goes down, and answers the questions a whitelist or a login check asks.
403 that says so and the status message stops changing; settings and keys are kept.lunar_srv_.... Keep it like a password.resources/ and add set lunar_key "..." and ensure lunar-status to server.cfg. Anything else: send the heartbeat below about once a minute./status.Base address https://api.thelunarbot.com/v1. Every request carries the service's key as Authorization: Bearer lunar_srv_.... A key belongs to one service in one Discord, so there's no server id to pass and nothing else it can reach. Fields are only ever added to these shapes, never renamed.
POST /heartbeatReport in. JSON body, all optional: players, maxPlayers, playerNames (up to 100), address, version, map, motd, and status, which is "online" unless you send "stopping" on shutdown. A service that says nothing for three minutes (you choose how long) reads as offline. For something that isn't a game, players is shown as how many are online and map as a line of detail. Every text field is cut to length and made inert before it reaches Discord, so nothing in a report can ping, link or format anything.GET /members/{discordId}Who this Discord account is to your server: inServer, banned, roles (id and name), nickname, level, xp, joinedAt. This is what a role whitelist, a priority queue or "banned in Discord means banned in game" asks at the door.GET /meWhich service and Discord this key belongs to. Useful for checking a key.server.cfg or an environment variable and nowhere else, never in a chat, a screenshot, a public repository or anything users download. Service keys don't expire, so an old key never takes your service offline without warning; replace one every few months from the dashboard, and at once if it may have leaked.429 with a Retry-After.With the script installed, set lunar_whitelist_role "Whitelisted" lets in only members holding that role, and set lunar_block_banned "true" turns away anyone banned in your Discord. The role can be a name or an id. Players need Discord open when they start FiveM so the server can see their account.