NyrxBot

What's new

What arrived in the bot lately, what it is for and how it works. All of it without premium and without paid add-ons.

Eighteen new features, most of them settable from the panel

The biggest batch so far: the things people asked for most often, plus a few that sit behind a paid plan elsewhere. All of it without premium, without paid add-ons and without a watermark. The only caps are the ones Discord imposes or the ones that keep a list from growing forever — and every one of them is written out below.

“If A, then B” rules

You join an event on the server to something the bot does — no more asking anyone for a script or adding a second bot for one small thing.

  • Triggers: someone joined, someone left, got a role, lost a role, reached a level, boosted the server, joined a voice channel, left a voice channel.
  • Actions: give a role, take a role, post in a channel, send a direct message, add XP.
  • In the panel a rule reads as a sentence: “when someone reaches level 10, give the role Regular”. Fields a given trigger does not use are not shown at all, so a rule that needs a role cannot be saved without one.
  • A level counts at the moment the threshold is crossed, not on every message above it: a level 10 rule fires once, exactly on the promotion from 9 to 10. It counts Discord-side promotions — from messages and from time in voice channels.
  • Message text accepts variables: {user}, {username}, {tag}, {server}, {count}, {channel}, {date}, {time}.
  • Every rule has its own switch, so it can be put to sleep instead of deleted and retyped later.

Watch out: A “got a role” rule ignores a role another rule granted (the bot remembers that for ten seconds) — otherwise two rules giving each other roles would loop forever. Roles from elsewhere, say the shop or a level reward, do fire the rule. A server may have 25 rules, and at most five of them fire on one event: twenty-five join rules would turn every join into twenty-five calls to Discord.

  • /rule addA new rule: the trigger, the action and the details.
  • /rule listThe server's rules with numbers and a use counter.
  • /rule removeRemoves the rule with the given number.
  • /rule toggleEnables a rule or puts it to sleep without deleting it.

Server economy

A currency people earn by showing up and a shop that turns it into a role. The reason is simple: a rank by itself does nothing, while a role bought with your own coins means something.

  • You set the currency name and symbol yourself — “monet” and 🪙 by default, because the bot is Polish-first.
  • Income: /daily once a day with a bonus for each day of the streak, and /work every configured interval, paying a random amount from a range.
  • Spending: a shop of items. An item can grant a role, have a limited stock and a per-person purchase limit.
  • Transfers between people (/pay) and betting (/coinflip) can be switched off separately, along with the maximum bet.
  • The /rich board shows the wealthiest; the panel shows the top ten without going to Discord.
  • The settings belong to the server owner: /eco setup, /eco rates and /eco rules. /eco give adds or takes coins, and /eco reset zeroes balances and streaks while keeping the purchase history.

Watch out: The currency name is inserted without inflection, so pick a form that fits most numbers. A purchase takes the coins only after the item is claimed, and both the coins and the item come back if Discord refuses to grant the role.

  • /balanceA balance — yours or someone else's.
  • /dailyThe daily reward, with a streak bonus.
  • /workA work payout, once per configured interval.
  • /shopWhat this server sells.
  • /buyBuys an item from the shop.
  • /payA transfer to another person.
  • /coinflipA coin bet, a fair fifty-fifty.
  • /richThe richest people on the server.
  • /eco setupTurns the economy on, sets the currency name and the starting balance.
  • /eco ratesThe daily reward, the work range and the interval.
  • /eco rulesWhether betting and transfers are allowed, and up to what amount.
  • /eco item addAdds an item to the shop.
  • /eco giveAdds or takes coins.
  • /eco resetZeroes balances, keeping the purchase history.

Custom commands

Your own command in Discord's list with your own text — for the rules, a channel guide, a Minecraft server link or whatever people ask about for the three hundredth time.

  • The command really exists on Discord: after adding it, it shows up when you type a slash, with its description and hints.
  • The answer can be plain text or an embed with a title and a colour.
  • The text accepts the same variables as rules: {user}, {username}, {tag}, {server}, {count}, {channel}, {date}, {time}.
  • A command can also give or take a role — a simple self-service role without a reaction panel.
  • Use can be limited to one role, and the answer can be visible only to the person who ran it.
  • The panel shows, per command, whether Discord already sees it or it is still waiting to be registered.

Watch out: A name is lowercase letters, digits, a dash and an underscore, up to 32 characters — Discord's rule, not ours. One server may have 25 custom commands. Registration takes a few seconds; if a command does not appear within a minute, the usual cause is that the bot was invited without the applications.commands scope — re-inviting it with our link fixes that.

  • /customcommand addAdds a command and registers it with Discord right away.
  • /customcommand editChanges the text, the embed, the visibility and the role allowed to use it.
  • /customcommand removeRemoves a command and takes it off Discord's list.
  • /customcommand listThe server's commands with a use counter.

Auto replies

The bot answers by itself when a given text shows up in chat. No command, no asking — “how do I join the server” gets an answer at once, not when a staff member happens to be looking.

  • Four ways to match: a whole word, anywhere in the message, at the start of the message, or the whole message exactly.
  • The comparison ignores capital letters and diacritics, so “jak wejsc” matches “Jak wejść”.
  • A cooldown (30 seconds by default) keeps a rule from flooding a channel when ten people write the same thing in a row.
  • A rule can be limited to chosen channels and told to ignore chosen roles — the staff, for instance.
  • The bot can answer as a reply or as a plain message, and can also delete the message that triggered it.

Watch out: “Anywhere” on a short word catches more than you expect: “ip” also matches “ipad” and “vip”. That is why whole word is the default. One server may have 30 auto replies.

  • /autoresponder addA new rule: the text to look for and the answer.
  • /autoresponder listThe server's rules with numbers.
  • /autoresponder removeRemoves the rule with the given number.

Scheduled announcements and reminders

A message that goes out by itself at a set hour, and a reminder for one person. Two different things solving the same problem: something has to speak up when nobody is at the keyboard.

  • Announcements: daily at an hour, weekly on a chosen day, or every few hours. A role mention can be added.
  • The hour counts in the server's time zone, the same one you set for birthdays. “Every Monday at 18” means six in the evening for the people reading it, not on a machine in Germany.
  • Reminders: /reminder add with a period — “15” means minutes, and “2h30m”, “90 min”, “3 dni” and “1w” are understood too. The units are the Polish short forms: s, sek, m, min, h, g, godz, d, dni, w, tyg.
  • A reminder arrives in the channel or in a direct message, as you prefer; /reminder list shows yours and they can be cancelled.
  • Every announcement has a switch, so you do not have to delete and retype it for the holidays.

Watch out: The bot checks announcements and reminders once a minute, so a message goes out in the minute it is set for, not to the second — a 10-second reminder may therefore arrive up to a minute late. The longest reminder is a year, one person may have 10 at a time, and a server 15 announcements. The switch on a single announcement lives in the panel.

  • /announce dailyAn announcement every day at an hour.
  • /announce weeklyAn announcement once a week on a chosen day.
  • /announce everyAn announcement every few hours.
  • /announce listScheduled messages with numbers.
  • /announce removeRemoves the announcement with the given number.
  • /reminder addA reminder after a given time.
  • /reminder listYour reminders on this server.
  • /reminder cancelCancels a reminder.

Counter channels

A voice channel whose name shows a number — how many people on the server, how many boosts, how many holders of a role. Visible straight from the channel list, no command needed.

  • What can be counted: everyone, humans without bots, bots alone, boosts, holders of a given role, the number of channels.
  • The name comes from a pattern with an {n} marker, for instance “Members: {n}”. Thousands get a space: 1 248, not 1248.
  • A new channel is created by /counter create, while the panel and /counter add take over an existing one — if you already have a “Members: 300” channel, there is no need for a second.
  • A channel created by /counter create has the right to join taken away at once — it is a sign, not a conversation. On a channel that is taken over the bot leaves permissions alone, because changing them could break something that already worked there.

Watch out: Discord allows two channel renames per ten minutes and does not say so — it simply stops answering. That is why a counter refreshes once every ten minutes rather than on every join. A server may have six counters: each one is another rename in the same window of the bot's requests to Discord. A counter deletes itself only when the channel really stopped existing; a missing permission does not wipe it.

  • /counter createCreates a new counter channel.
  • /counter addTurns an existing channel into a counter.
  • /counter listThe server's counters.
  • /counter removeStops renaming the channel.

Raid protection

Automod looks at message content and that is not enough. A raid is thirty fresh accounts joining within half a minute, each sending one message — none of them breaks any rule on its own.

  • Wave: you set how many joins in how many seconds count as a raid, and what to do then — call the staff, lock the server down, kick or ban everyone from that wave.
  • Locking down means raising Discord's verification level for a few minutes. Afterwards the bot restores exactly the level that was there before.
  • The gate for fresh accounts works separately: an account younger than N days does not get in, and an avatar can be required. Its punishment is separate from the wave's, because a server may want only one of the two.
  • Alerts go to a chosen channel (or the log channel) and can mention a chosen role — so that somebody actually sees them.

Watch out: The previous verification level is kept in the database, not in memory: if a timer in memory were the only guard, restarting the bot mid-raid would leave the server raised forever — and nobody would know it was the bot, because the bot would no longer remember.

  • /antiraid statusShows what is currently set.
  • /antiraid onTurns the protection on.
  • /antiraid offTurns the protection off.
  • /antiraid waveThe wave thresholds and its punishment.
  • /antiraid gateThe gate for fresh and avatarless accounts.
  • /antiraid alertsWhere to alert and whom to call.

Notifications from Kick and from any RSS feed

Kick and RSS join YouTube and Twitch. RSS means practically any blog, news site or channel that publishes a feed — and nearly all of them do.

  • Kick needs just the channel name; RSS needs the feed address, usually ending in /feed or /rss.
  • The bot checks sources every few minutes and announces only new entries — the first check records the state and announces nothing, so adding a source does not dump three years of archive into a channel.
  • The announcement text is yours, with or without a role mention.
  • Kick and RSS need no keys at all — unlike Twitch, which requires a registered application.

Watch out: An RSS address has to be public. Addresses pointing into a local network are refused, together with redirects leading there — otherwise an address field in the panel would be a door into the machine the bot runs on.

Music quiz

The bot plays a snippet, people guess in chat. It follows naturally from the music we already have — and it is the only thing in this batch that is simply fun rather than a tool.

  • /quiz start takes songs from the server's play history or from your own playlist, 1 to 20 rounds, 10 to 120 seconds per round.
  • A point for the title, a smaller one for the artist alone — “that's sanah” is real knowledge, just not all of it.
  • The faster, the more: points shrink as the round's time runs out.
  • Typos pass: “bohemian rapsody” counts as “Bohemian Rhapsody”. A longer title tolerates more mistakes than a short one.
  • Bracketed bits, “(Official Video)” tails and “feat.” are stripped from the title, so you do not have to retype the whole YouTube name.

Watch out: During a quiz /music, its buttons and /lyrics are locked and the web player gets no state at all — otherwise one glance at /music would win it. One quiz per server at a time. Five songs in a row that fail to load end the game: that means the source is not answering, not that nobody is guessing.

  • /quiz startStarts a quiz in the voice channel.
  • /quiz stopEnds the quiz and shows the scores.

Twitch chat XP

Chatting on Twitch adds XP to Discord levels. For a streamer that makes one community in two places instead of two separate ones where only one counts.

  • You add a Twitch channel login, set the XP per message and the gap between awards for one person.
  • The bot reads the chat anonymously — Twitch allows that without any key and without the streamer's consent, because a public channel's chat is public. This feature needs nothing in the server configuration.
  • Linking an account is confirmed, not declared: /twitch link gives a code to type in the Twitch chat. The bot reads that chat, so it sees the code together with the sender's login.
  • The XP goes into the same levels as Discord chatting and shows up on /rank. Level rewards and rules, however, react to Discord-side promotions — so they arrive with the first message or voice session after a Twitch-driven level-up.

Watch out: A plain “type your nickname” would let anyone claim someone else's chat and farm XP off another person's audience — hence the code. A link is separate per Discord server, because the XP is counted separately too.

  • /twitch addAdds a chat to the watched list.
  • /twitch listWatched chats and their XP rates.
  • /twitch removeStops reading a chat.
  • /twitch linkGives a code to type in the Twitch chat.
  • /twitch unlinkRemoves the link.

GIF search and lookup commands

Small things whose absence you notice only when you have to add a third bot to get them.

  • /gif searches Tenor and posts the result in the channel, with Tenor's content filter permanently set to its medium level.
  • /serverinfo and /userinfo show what Discord does not say outright: the creation date, the boost count, the verification level, how long someone has been on the server.
  • /roleinfo says how many people have a role, what permissions it grants and where it sits in the hierarchy.
  • /avatar pulls an avatar at 1024 px — the server one if a person has it — and /roll rolls a die or picks from given options.

Watch out: /gif appears in the command list only when the bot's host has a Tenor key. Without one the command is not registered at all — instead of existing and answering with an error, which nobody on the other side of the screen can diagnose.

  • /gifFinds a GIF and posts it in the channel.
  • /serverinfoInformation about the server.
  • /userinfoInformation about a person.
  • /roleinfoInformation about a role.
  • /avatarAn avatar at full resolution.
  • /rollA die or a draw from options.

Forms and applications

A ticket answers “I have an issue”, a form answers “I want to apply”. Until now a moderator application looked like an ordinary ticket here: a private channel with not a single question, and the staff asked the same things every time.

  • You create a form and add questions to it. A Discord pop-up takes at most five fields, so that is the limit on questions — which is why the panel shows exactly five slots instead of an “add another” button.
  • Each question can be one line or a paragraph, required or not, with a hint in the empty field and its own length limit.
  • People fill the form in with /apply or with a button on the panel that /form panel posts. One panel holds ten forms — that is what a Discord embed leaves room for alongside their descriptions.
  • The answers arrive as one embed in the staff channel, with accept and reject buttons. That same embed lives for the whole life of the application — after a decision it changes colour instead of a second message being added.
  • Accepting can grant a role and sends a direct message with the result. Rejecting writes too — without it people ask in the general channel whether anyone has looked yet.
  • Reviewing is for the role chosen on the form or for the server staff. One application per person is the default, with a separate setting for “may apply again after a rejection”.

Watch out: An application is stored on our side, not only in the channel embed: a message can be deleted, and then nobody knows who wrote what or whether it was already reviewed. If the answers channel disappears, the form switches itself off and is switched back on in the panel — accepting applications nobody will ever see is the worst possible outcome. An applications channel cannot be put under auto-clearing: deleting the embeds would take away the decision buttons.

  • /form createCreates a form and picks the answers channel.
  • /form question addAdds a question to a form.
  • /form panelPosts a panel with buttons in a channel.
  • /form listThe server's forms and their state.
  • /form removeRemoves a form together with its applications.
  • /applyFills in a form. For everyone, not only the staff.

Channels that clear themselves

For channels like “drop your link”, “counting to a million” and “cat pictures”: the history serves nobody there, and after a year the channel holds a hundred thousand messages and takes half a minute to open.

  • You pick a channel and an interval: from an hour to thirty days.
  • Pinned messages are kept by default — the channel's own rules should not go with the rest.
  • A few newest messages can be kept so the channel is never completely empty.
  • The first clear happens at the next pass, within ten minutes, rather than after a full interval: whoever turns clearing on for a channel with a thousand messages wants them gone now.
  • In the panel every channel has a switch, so clearing can be put to sleep for an event without deleting the setting. A server may have ten clearing channels.

Watch out: Discord only allows bulk deletion of messages younger than 14 days, a hundred at a time. A channel switched on after a year clears only two weeks deep. One pass deletes a hundred messages, and when that hundred runs out the channel goes back in the queue for the next pass — so a thousand messages go a hundred per ten minutes, in under two hours rather than at once. These are Discord's limits, not ours, which is why they are written here instead of discovered later.

  • /autopurge setTurns clearing on for a channel every X hours.
  • /autopurge listChannels that clear themselves.
  • /autopurge offStops clearing a channel.

Notes written by the members

A short note that ANYONE saves, not only the staff. For a link to a map, to a sign-up sheet, to somebody's guide — the things people ask about for the twentieth time and that do not deserve a command of their own.

  • /tag add saves a note under a short name, /tag show displays it — publicly, because that is what it is for.
  • The command suggests the names, so nobody has to remember what somebody called their note six months ago.
  • The author and the server staff can change or remove a note. Author-only would be too tight: somebody leaves and abandons a stale link nobody can fix.
  • Two hundred notes per server and twenty-five per person. The second limit exists so the first person to notice cannot take the whole server allowance.
  • The panel lists every note with its author, date and use counter — to look through and remove what does not belong.

Watch out: How this differs from custom commands: a custom command belongs to the staff and becomes a real Discord command, while a note belongs to its author and lives under one shared command. The distinction is deliberate — the server's command list should stay short while there will be twenty notes. The panel does not add notes: adding from there would bypass the per-person limit.

  • /tag showShows a note in the channel.
  • /tag addSaves a new note.
  • /tag editChanges the text of your note.
  • /tag removeRemoves your note.
  • /tag listAll of the server's notes.

An “away” status

The bot answers on behalf of someone who is away. Without it, a person writes to you three times over two hours and finally decides you are ignoring them.

  • /afk sets the status, optionally with a reason. Only the person who set it sees the confirmation.
  • When somebody mentions you, the bot answers in the channel: how long you have been away and what you said on your way out.
  • The status clears ITSELF on your first message. A “back” command would exist for nobody to remember.
  • On your return the bot says how many times you were mentioned meanwhile — the one genuinely useful thing this feature gives.
  • The status lives in the database rather than in memory: set for the night and lost on a restart, it would be worse than nothing, because nobody would know it stopped working.

Watch out: The bot names at most three away people in one answer and mentions nobody while doing it. One message with five pings should not turn into a five-line answer that calls the same people a second time.

  • /afkSets the away status, with or without a reason.

Roles anyone takes themselves

Role panels do the same with a button, but a panel has to be found on the channel where it was posted. A command works everywhere, and still works six months later when that channel has long scrolled away.

  • You open a role in the panel or with /selfrole add, with a description and an optional level requirement.
  • People take it with /role get, give it back with /role drop, and /role list shows what is available.
  • The level requirement is read from the same place as the rank card, so “from level 10” means the same here and on /rank.
  • The hierarchy is checked when the role is opened, not on the first click: a role above the bot never reaches the list instead of failing for everyone who picks it.
  • A role deleted on the server drops off the list by itself — an entry pointing at nothing has no reason to show up.
  • /selfrole addOpens a role for taking.
  • /selfrole listRoles open for taking.
  • /selfrole removeCloses a role — nobody can take it any more.
  • /role getTakes a role. For everyone.
  • /role dropGives a role back.

Role protection

Rules, custom commands, the shop and level rewards can all grant roles. Which means whoever can add a rule can also give themselves any role the bot can reach — and no server wants that.

  • You pick the protected role and the role allowed to hand it out. The server owner always passes.
  • A separate switch, “the bot may grant it by itself”, closes the automatic paths: rules, custom commands, level rewards, role panels, the shop, birthdays, autoroles, persistent roles and self-service roles.
  • The “who may” list covers the manual path — today that is accepting an application, because a person decides there. Nothing ticked means “the owner only”, not “everyone”: reading it the other way would turn a security feature into its opposite.
  • Taking a role away always passes the protection — otherwise it would break things that have nothing to do with handing roles out: a reward removing a lower tier, or a panel with one role at a time.
  • A protection reaches the bot right after it is saved in the panel, with no waiting for a cache to expire.

Watch out: The scope is deliberately limited and we say so plainly: the bot CANNOT stop a role being granted by hand in Discord's settings. Discord itself guards that — with the Manage Roles permission and the hierarchy. If the feature pretended to close every path, it would be worse than nothing: somebody would set a protection and stop watching Discord's own permissions.

  • /roleguard setPuts a protection on a role.
  • /roleguard listProtected roles.
  • /roleguard offRemoves a protection.

Three commands just for fun

The small stuff people add a third bot for. Three commands, not thirty — the server's command list should stay readable.

  • /8ball answers a question like a magic ball. This one really is random: an oracle that always gives the same answer to the same question is a FAQ.
  • /ship works out how well two people match and blends their names into one. The result for a given pair is ALWAYS the same, including after swapping the order.
  • /rate rates anything out of ten, repeatably too: the same person asking about the same thing gets the same score.
  • Repeatability is the point here. A command that gives a different number the second time is recognised as pretending at once and stops being fun.
  • /8ballAsks the magic ball.
  • /shipHow well two people match.
  • /rateA rating of anything out of ten.

Everything from the panel, not only from commands

Most of the things above have their own page in this panel. The reason is simple: an “if A, then B” rule can be typed as a command, but it cannot be read back from a Discord list — and settings get read more often than changed. The fun commands, the lookup commands and AFK have no page, because there is nothing in them to set.

  • Fourteen new pages: Rules, Economy, Custom commands, Auto replies, Announcements, Counters, Auto-clear, Raid protection, Role protection, Twitch XP, Self-service roles, Notes, Forms and Form applications.
  • Rules, the economy, auto replies, raid protection, self-service roles, role protection and Twitch take effect in the same second — the bot gets a signal instead of waiting for a cache to expire. Announcements, counters, clearing and watched sources take effect at the bot's next pass: within one, ten, ten and five minutes respectively.
  • Custom commands added from the panel are registered with Discord by the bot itself; the page shows which are already visible and which are still waiting.
  • For rules the panel shows only the fields a given trigger uses and reads a rule back as a sentence — instead of nine fields with seven of them empty.
  • The side menu lights a dot next to whatever is enabled on the server, so you can see the state without opening every page in turn.
  • Above the menu there is a search box: type “applications”, “clearing” or “economy” and the menu narrows to the matches. It finds them without diacritics and regardless of case. Groups collapse and the browser remembers which — forty-one entries become seven lines.
  • Submitted applications are read side by side in the panel, with filters by status and by form. A decision from the site does exactly what the button in the staff channel does: it changes the embed on Discord, grants the role and messages the person. Whoever clicks first decides — the second one is told somebody was faster.
  • Next to a form's questions there is a preview of the pop-up the applicant will see. Before, the only way to check it was to submit an application on your own server and then reject it yourself.