Discord has no built-in log channel, so you need a bot for this. Make a private "Logs" category with a few channels in it, such as message, member and voice logs. Add the bot to that category with View Channel, Read Message History, Send Messages and Embed Links. Then turn on the events you want in the bot's settings and test each one with a real edit, delete, join and voice channel switch.
The steps below work with any logging bot, because most of the setup happens in Discord itself. After that we show how PeakBot does it. We make PeakBot.
What a logger bot records that Discord doesn't
A lot of people assume the audit log already covers this. It covers less than you'd expect:
- Message edits never appear in the audit log.
- Member joins never appear in the audit log either.
- Message deletes get an entry only when someone deletes another person's message, and the entry never shows what the message said.
- Entries are kept for only 45 days. If the same person does the same thing several times in quick succession, Discord merges it into one entry and keeps only the first reason.
A logging bot fills those gaps. It posts each event to a channel as it happens, with the old and new text for edits and the content of deleted messages. Those posts stay until you delete them.
Step by step: set up a log channel in Discord
1. Create a Logs category and channels
Create a category called Logs, then put separate text channels inside it:
#message-logfor edits and deletes#member-logfor joins and leaves#voice-logfor joining, leaving and moving between voice channels#mod-logfor bans, kicks, timeouts and warnings
One channel for everything works too. On a busy server, though, message edits will bury the one join you were looking for. Separate channels also let you mute the noisy ones and keep notifications on for the ones that matter.
2. Make the category private
On desktop, right-click the category or channel, choose Edit Channel (or Edit Category), then open Permissions. Under Channel Permissions, turn on Private Channel, then press Add members or roles and add your staff roles.
On mobile, long-press the channel, tap Edit Channel, then Permissions. Menu labels shift a little between app versions, so if something looks different, find the Permissions section.
Do this on the category, then keep each log channel synced to it. Synced channels take the category's permissions, so any log channel you add later starts out private. Discord's roles and permissions guide explains how channel overrides work.
3. Invite the bot without Administrator
You need Manage Server to add a bot. Open the bot's invite link, pick your server from the dropdown and press Authorize. You can review and remove bots later in Server Settings under Integrations (newer clients may call it Apps).
Some older invite links ask for Administrator. A logger doesn't need it, and a bot with Administrator can do anything on your server if it gets compromised. Untick it if the invite lets you, or give the bot's role only what it needs.
4. Add the bot to the private channels
Most guides leave this step out, and it's the main reason people search "my logging bot isn't logging anything." Making a channel private takes View Channel away from @everyone, and that includes bots. Channel permissions override server permissions, so the bot can have the right server role and still be locked out.
Add the bot (or its role) to the Logs category with:
- View Channel
- Read Message History
- Send Messages
- Embed Links (most loggers post embeds, and without this permission their posts show up blank or don't appear)
For message logs, the bot also has to be able to see the channels it's watching. If it can't view a channel, it can't see edits or deletes there.
5. Choose events and ignored channels in the bot
Open the bot's settings, point each event type at its channel, and turn on the events you want. Two things worth doing:
- Ignore the log channels themselves, plus any bot-spam channels, so the logger isn't logging its own posts.
- Leave voice logs off at first on a big server if you only need them now and then. They get noisy.
6. Test every event
Check each event once rather than assuming it works:
- Send a message, edit it, then delete it. You should get two entries in
#message-log. - Have a friend or an alt account join and leave. Check
#member-log. - Join a voice channel, move to another, then leave. Check
#voice-log. - Log in as a regular member (or use an alt) and make sure the Logs category doesn't show up at all.
If an entry is missing, check the permissions on that exact channel first, then the bot's event settings.
Why old deleted messages can't be shown
A bot can only report what a deleted or edited message said if it saw that message while it was online. Anything sent before you added the bot, or while it was offline, has no saved copy. The log can say a message was deleted but not what it said. Set logging up before you need it, not right after something goes wrong.
Join logs: the quick version
If all you want is a record of who joins and leaves:
- Built in: Server Settings > Overview > System Messages Channel posts a message when someone joins. That message is a public welcome. Nothing is posted when someone leaves, and every member can see it. The No System Messages option turns it off. See Discord's new member messages article.
- With a bot: a member log posts both joins and leaves to a private channel. Staff can spot a returning troublemaker or a burst of new accounts there.
If raids or alt accounts are why you're watching joins, put a gate in front of the join log. Our verification bot setup guide covers that.
How PeakBot does it
PeakBot's Logging covers message edits and deletes, joins and leaves, voice activity, and every manual mod action. You set it up on the web dashboard, not with a command.
- Add PeakBot from peakbot.pro and follow the getting started guide.
- Do steps 1, 2 and 4 above: a private Logs category with PeakBot's role added to it.
- In the dashboard, pick your server and open Auto Moderation in the sidebar. The logging settings are on that page.
- Choose the log channel and the events to record, save, then run the tests from step 6.
What's free and what isn't:
- Free: message edit and delete logs, join and leave logs, and manual mod action logs. The Free plan has no time limit.
- Paid plan: voice activity logs. Starter is $5.75/month per server, or $48/year.
Since Logging lives on the Auto Moderation page, you can set up filters there as well: anti-spam, invite and link filters, a word filter and mention spam. Separately, the bans, kicks and timeouts your mods hand out by hand go to the logs. If you're planning a new server, our gaming server template shows where a staff-only Logs category fits with everything else.
Frequently Asked Questions
Does Discord log deleted messages without a bot?
Partly. The audit log records when someone deletes another person's message. It doesn't record people deleting their own messages, and it never shows the content. Entries disappear after 45 days. To see what a deleted message said, you need a logging bot that was already in the server when the message was sent.
Can a logger show what a deleted message said?
Yes, if the bot saw the message when it was posted. It can't show messages from before it joined or from channels it can't view.
Why isn't my logging bot logging anything?
It's usually permissions. Either the log channel is private and the bot was never added to it, or the bot is missing Send Messages or Embed Links there. After that, check that the bot can view the channels it's watching and that each event is turned on. If you host your own bot, join and leave events need the privileged Server Members intent, and message content needs the Message Content intent. You turn both on in Discord's developer portal.
How do I make a log channel only mods can see?
Go to Edit Channel > Permissions, turn on Private Channel, and add only your staff roles and the bot. If you do this on a category and keep its channels synced, every log channel stays locked.
Can I log when someone joins or leaves a voice channel?
Yes. Most logging bots can post voice joins, leaves and moves. Discord treats these as non-privileged events, so bots usually get them without extra approval. In PeakBot, voice activity logs need a paid plan.
How do I see who left my Discord server?
By default Discord doesn't post leaves anywhere, and a leave isn't an audit log event unless the person was kicked or banned. Set up a member log with a bot, and from then on every leave goes to your private channel.
