โก TL;DR
- ๐จ nyx.cool and the dashboard have a new design.
- ๐ Dashboard previews show messages the way Discord will: your server's names, role colours, and nyx with the name and avatar it has in your server.
- ๐ Automod warnings and Anti-Ping notices now notify the person they mention. They never did before.
- ๐ Statistics cover active members, voice time, top channels and your busiest hours. nyx+ can look back a year.
- ๐๏ธ Scheduled messages can repeat every few minutes, hours or days, monthly, or once, and can skip the embed.
- ๐ชต Logging catches leaves and role changes it used to miss, and logs webhook changes for the first time.
- ๐ Recent changes on the server overview shows who changed a setting, what gave them the right to, and what changed.
Your settings carry over. Nothing was reset. A few things behave differently, so read the next section if you run a server.
โ ๏ธ What behaves differently
- ๐ Saved messages ping tagged people. If a saved or scheduled message mentions a person in its text, they now get a notification. Before, no mention in these messages notified anyone. Role, @everyone and @here mentions stay silent unless you turn on "Let mentions ping" for that message.
- ๐ก๏ธ Anti-Ping pings the sender. The notice mentions whoever pinged the protected member, above the embed. If your custom notice starts with
{author}, nyx leaves that word out of the embed so they aren't named twice. - ๐ท๏ธ Custom log footers show up. With nyx+ you could set a footer for log embeds, but the default
nyx | Loggingfooter replaced it. Yours now shows. - ๐งน Statistics older than a year are deleted. nyx trims them once a day, as the privacy policy says.
- ๐ญ New invites ask for Manage Roles. Progression needs it to hand out reward roles, and Tickets needs it to control who sees each ticket channel. If nyx joined your server earlier, the Plugins page tells you when either plugin is missing it.
Part one: what changed
๐จ A new design
I redesigned every page on nyx.cool and in the dashboard.
- The install page lists each permission nyx asks for and what it's used for.
- The pricing page compares Free and nyx+ row by row.
- Plugin pages put the settings on the left and a live preview of the message on the right.
- The commands page is searchable, and each command opens to show its options, permissions and examples.
- The dashboard sidebar has a "What's new" link that names the newest post and marks it until you've read it.
๐ Previews that match Discord
Settings pages preview each message the way Discord will show it.
- nyx appears with the name and avatar it has in your server, server nickname included.
{server}shows your server's name.{server}and{guild}now work everywhere and mean the same thing, so older templates keep working.- Members and channels show as blue pills, and roles in their own colour. A message that would ping you gets Discord's gold highlight.
- A mention picker adds roles, channels and members to your message text, so you don't need to look up IDs.
- The ticket header preview matches the message nyx posts when a ticket opens.
๐ Warnings that ping
Discord shows mentions inside an embed but never sends a notification for them. Automod warnings and Anti-Ping notices put their mention inside the embed, so nobody was ever notified. The mention now goes in the message text above the embed.
Anti-Ping still names the protected member inside the embed, where you can click their name without notifying them.
๐ Statistics
The Statistics page tracks more than before:
- your member count over time, and how many people left within a week of joining
- active members per day, meaning people who sent a message or joined voice
- time spent in voice
- top channels, by messages and by voice time
- your busiest hours, as a weekday-by-hour grid in your own timezone
Free servers see the last 7 days. nyx+ now shows 90 days by default, up from 30, and can go back a year. Active members are counted without storing who they were.
๐๏ธ Scheduled messages
Saved messages can repeat:
- every so many minutes, hours or days
- weekly, at set times on set days, which is how every schedule worked before
- monthly, on set days of the month
- once, at a set time
A message can also leave out the embed and post plain text. With nyx+ you can keep 50 saved messages and send each one up to 24 times a day. Free servers keep 5, each sent once a day.
๐ชต Logging
- nyx missed leaves from members it hadn't seen since its last restart. Those leaves now reach your log, your farewell messages and your statistics.
- Kicks, timeouts, nickname changes and role changes for those members come from the server's audit log, so nyx needs View Audit Log to log them.
- Webhook changes are logged. The option existed before, but Discord never sent nyx the events.
- When nyx can't remember an edited or deleted message, the log entry says so instead of showing a blank.
- The Logging settings page shows each event with the colour its log entry has in Discord.
๐ Recent changes
The server overview lists recent dashboard changes. Each entry now shows whether the person was the owner, an Administrator or a Bot Master, and through which role, plus a line for each setting that changed. Changes made with commands in Discord aren't listed.
๐ฉบ Plugin health
Health checks name the exact permissions nyx is missing and where. Servers that gave nyx Administrator no longer get warnings about missing permissions. A plugin that's on but has its own switch turned off shows as paused instead of broken.
๐ซ Tickets
If nyx couldn't post the transcript to your log channel, closing the ticket failed and it stayed open. Now the ticket closes, the transcript stays in the dashboard, and the Tickets health check points at the channel.
๐ API
- Three new endpoints: channel activity, activity by hour, and voice activity.
- Daily statistics include the member count, and each series says whether it adds up over days or is a level on each day.
- A date that doesn't exist, like 2026-02-30, now returns an error instead of quietly becoming March 2.
- api.nyx.cool has the new design too.
๐ง Smaller fixes
- Honeypot described softban as a kick. It's a ban followed by an unban, which clears the person's recent messages, and the wording now says so.
- The
/helpand/pluginsexamples name commands that exist. - The Dashboard button on nyx.cool no longer restarts Discord sign-in when you're already signed in, and the home page opens while you're signed in.
- Every plugin page uses the same tabs.
Part two: the technical half
Mentions in embeds. Discord renders a mention inside an embed but never notifies anyone for it. Only mentions in the message content notify. Automod and Anti-Ping now send the mention as content, with allowed mentions limited to that one person.
Missing leaves. discord.js only emits guildMemberRemove for cached members unless the GuildMember partial is enabled, and after a restart the cache holds only the members nyx has seen since. nyx now enables that partial. A partial member carries no previous roles or nickname, so there's nothing to compare an update against. nyx reads those changes from guildAuditLogEntryCreate instead and matches them against the normal update path, so nothing is logged twice.
Webhook events. Discord only sends webhook events to bots that request the Guild Webhooks intent. nyx never requested it, so the webhook option logged nothing until now.
Administrator. A member's server-level permissions are the bits of its roles. Administrator implies every permission, but discord.js only expands it when it resolves permissions for a channel. The health check read the server-level bits, saw Administrator and little else, and reported the rest as missing. It now checks for Administrator first.
Log footers. The logging code set your custom footer, then set the default one a few lines later, which replaced it.
Statistics storage. A new table keeps per-channel and per-hour counts next to the daily totals. Neither table stores user IDs. nyx counts active members in memory during the day and saves only the number. It trims both tables to a year once a day.
๐ฌ If anything looks wrong after the update, tell me in the support server.