Back to blog
Community

Discord Tools Every RPG Server Needs: Timestamps, Permissions and Bot Builders

Timezone-proof session times, bot permissions that work the first time, snowflake IDs decoded and message builders — the free Discord utilities that fix the recurring chores of running a tabletop server.

Discord Tools Every RPG Server Needs: Timestamps, Permissions and Bot Builders

Most tabletop groups don't live on a virtual tabletop. They live on Discord, and drop into the tabletop for three hours a week.

Which means a surprising amount of running a game is actually running a server: scheduling across timezones, giving a bot the right permissions, working out who joined when, posting an announcement that doesn't look like a wall of text. None of that is roleplaying, all of it is recurring, and every piece has a free tool that makes it a thirty-second job.

Here's the set worth bookmarking, in the order you'll hit the problems.

Session times that survive timezones

This is the most common friction in the entire hobby, and it has a complete solution that most tables still don't use.

If you post "session Saturday 8pm", you've created a bug. Your Portuguese player reads it as their 8pm, your player in Lisbon does the same, and someone shows up four hours late. Repeat weekly.

Discord solves this with dynamic timestamp tags: a short piece of markup that Discord renders in each reader's own local time, automatically. You post one thing, everyone sees the correct time in their own timezone, and daylight saving is handled for you.

The catch is that the raw syntax needs a Unix epoch number, and nobody knows what their session time is in seconds since 1970. That's the entire reason timestamp generators exist: you pick a date and time in a normal calendar, choose a display style, and copy a tag that's ready to paste.

The styles matter more than they look:

  • Full date and time — for the announcement post pinned in the channel.
  • Time only — for a reminder on the day.
  • Relative ("in 2 days") — the best one for a scheduling post, because it stays correct as the week passes without anyone editing it.

A practical habit: pin one message with the relative timestamp and update it weekly. Your scheduling problem disappears permanently, and it takes about ten seconds.

Bot permissions, right the first time

Every server admin has done this: invite a bot, discover it can't post in the channel it needs, go into role settings, guess, restart, guess again.

Discord permissions are a bitfield — a single number that encodes every individual permission as a bit. Bot invite links carry that number, which is why the invite URL has a long integer in it and why editing it by hand goes wrong.

A permissions calculator turns that into checkboxes: tick the permissions you actually want, copy the resulting number, and paste it into the invite URL or the role config.

Two pieces of advice that will save you a support thread:

Grant the minimum. A dice bot needs to read messages, send messages and use application commands. It does not need Administrator. "Administrator" is the shortcut everyone takes and it's the one that turns a compromised bot into a deleted server.

Remember channel overrides beat role permissions. If a bot has Send Messages at the role level but the channel denies it, the channel wins. Ninety percent of "the bot isn't working" reports are this, and no calculator will tell you — check the channel's permission overrides.

Working out who joined when

Every Discord object — user, message, channel, server — has a snowflake ID: a long number that isn't random. It encodes the exact millisecond the object was created.

A snowflake decoder turns that number into a date, which is more practically useful than it sounds:

  • Account age. A user applying to your public game whose account was created yesterday is worth a second look. Not a verdict — a signal.
  • Moderation. Reconstructing when a message was actually posted, independent of what a client displays.
  • Server history. Finding out precisely when your campaign server was created, which is a nice thing to know on an anniversary.

Copy any ID (with developer mode on, right-click, Copy ID), paste, and you have the timestamp.

Making announcements that people read

A campaign announcement posted as a wall of plain text gets skimmed. The same content with structure gets read.

Discord's newer message components let you build proper layouts — sections, separators, buttons, containers — rather than one block of markdown. Building that by hand means writing JSON, which is exactly the kind of task that produces a syntax error at 1am.

A Components V2 builder does it visually: arrange the message, see the live preview, copy the JSON or send it straight to a webhook. It's genuinely worth it for the things you post repeatedly — session recaps, the rules post, the character roster.

If you're building your server's own bot, two more from the same set: a modal builder for form popups (a character submission form, a downtime action request) and a slash command builder for defining commands with options, subcommands and localization. Both spare you hand-writing interaction payloads.

Dice in the channel, and dice on the table

Most servers reach for a dice bot, and for good reason: rolling in the channel keeps the whole session in one place, and it leaves a log everyone can scroll back through.

Worth knowing the trade-off, though. A dice bot's roll is a line of text. A 3D dice roller is an event — the physics, the pause, the result. For a critical moment, that difference is real, which is why plenty of tables use both: the bot for routine rolls, the visual roller for the ones that matter.

If you're choosing a bot, we compared the main ones in Fortuna vs Rollem vs Dice Maiden.

And the humblest tool on this page still earns its spot: a timer shared on screen for turn declarations. Combat speed roughly doubles.

A ten-minute server setup

If you're building a campaign server from scratch, this order works:

  1. Channels: one for out-of-character chat, one for in-character posts, one for dice, one for handouts. Four is enough. More channels mean less conversation, not more.
  2. Roles: Game Master, Player, and one per character if you like colour-coding. Set channel overrides here, not on individual users.
  3. Invite your bots with a permissions number you generated deliberately, not the default Administrator link.
  4. Pin a scheduling post with a relative timestamp.
  5. Post the session-zero summary as a structured message rather than a paragraph.

Ten minutes, and the recurring admin of a campaign mostly stops being a thing you think about.

All of the Discord utilities mentioned here are free and browser-based — the timestamp generator, permissions calculator, snowflake decoder, Components V2 builder, modal builder and slash command builder all live in the Discord tools section, alongside the wider set of free RPG tools.