Open source · Free

Open DM

Consent-aware DM permissions for Discord.

Members set their own DM mode — open, ask, or closed — and route requests through a server channel. Mutual permissions, audit logs, and a clean revoke flow. The DM tool servers should've had years ago.

DM modes · this server
@kira
Open
@drift
Ask
@sam
Closed
@priya
Ask
Why a DM bot

DMs aren't just private messages.

On Discord, an unsolicited DM is a tax — sometimes a small one, sometimes a big one. OpenDM gives members the dial they should've always had: who can DM me, and how I want to be asked.

Three modes per user
Open — anyone can DM you. Ask — requests route through the server. Closed — no DMs, period. Each member sets their own.
Requests stay in the server
DM and friend requests go through a configured channel with a request panel. No more random pings out of nowhere.
Mutual & revocable
Permissions are mutual once granted, and either side can revoke at any time. Every grant and revoke is logged for moderators.
Inside the bot

What you can actually do.

OpenDM is small on purpose. A handful of slash commands, a button panel, and a clean audit trail.

Set your DM mode
/dm_set_mode mode:(open|ask|closed) changes how others can reach you. Switch anytime.
Send a request
/dm_ask with a target user, a request type (DM or friend), and an optional reason. Goes to the configured request channel.
Check your status
/dm_info shows your current mode and your active permissions. /dm_status checks if you have mutual permission with someone.
Revoke permissions
/dm_revoke removes a permission relationship. No drama, no notification, no stigma.
Audit logs
Mods can run /dm_audit_user to see DM permission history for a member. Optional audit channel posts events as they happen.
Configure once
Mods set the request channel, the panel channel, and an optional audit channel. After that, members manage themselves.
Commands

Commands

All the slash commands at a glance.

/dm_help
Show an overview of the DM request system.
Anyone
/dm_info
Show your DM mode and current permission relationships.
Anyone
/dm_set_mode
Set your DM request mode — open / ask / closed.
Anyone
/dm_ask
Send a DM permission request to another user.
Anyone
/dm_status
Check whether mutual DM permission exists with a user.
Anyone
/dm_revoke
Remove DM permission relationship with another user.
Anyone
/dm_allow
Create a mutual DM permission relationship directly.
Anyone
/dm_request_channel_set
Set the channel where DM requests are posted.
Mod
/dm_request_panel_set
Set the channel that hosts the request button panel.
Mod
/dm_set_audit_channel
Set the channel used for DM audit logs.
Admin
/dm_audit_user
Show DM permission audit history for a user.
Admin
FAQ

Quick questions.

Is it really free?
Yes — OpenDM is open source on GitHub under the Billybots org. Run it yourself for free. It's also bundled in Dungeon Keeper if you'd rather not host one bot per feature.
Does it stop people from DMing each other through Discord directly?
No bot can. Discord controls DMs at the platform level. What OpenDM does is give your community a shared norm and a structured way to ask for permission — a social tool, not a technical lock.
Can I run it myself?
Yep. Python 3.10+, discord.py, SQLite. The repo has setup steps.
Is OpenDM a module of Dungeon Keeper?
Yes — OpenDM also runs as a module inside Dungeon Keeper, where it shares state and config with the rest of the suite. As a standalone, it's the whole bot.
Where do the audit logs go?
Every grant, revoke, request, and mode change is logged in a SQLite database. Optionally, you can configure an audit channel where mods see events posted as they happen.
Get the code

Self-host in five minutes.

OpenDM is a single-file Python bot. Clone the repo, set your Discord token, and run.

PYTHON 3.10+ · DISCORD.PY · SQLITE
Also from Billybots

Other open-source modules.