Bot icon
Ephemeral Roles Ephemeral Roles#2912
A Discord bot for managing ephemeral roles based upon member voice channel presence


Mentioned in Awesome Go Build Status Go Report Card Coverage Status Dev Chat

A Discord bot for managing ephemeral roles based upon voice channel member presence


  1. Click on the Ephemeral Roles logo head above or use this link to invite Ephemeral Roles into your Discord server
    1. The ‘Manage Roles’ permission is required. The invite link above provides that by automatically creating an appropriate role in your server for Ephemeral Roles
  2. Ensure the new role for Ephemeral Roles is at the top (or as near as possible) to the server’s list of roles
    1. If you’re not sure how or why to do that, take a quick read over Discord’s excellent Role Management 101 guide
  3. Enjoy!

What does Ephemeral Roles do?

After the Ephemeral Roles bot is invited to your Discord server, it immediately starts to watch for changes to your voice channels. When a member joins a channel, Ephemeral Roles automatically assigns that member an ephemeral role associated with the channel. If the ephemeral role doesn’t exist yet, Ephemeral Roles will create it.

By having your members auto-sorted into ephemeral roles in your member list, it’s clear to see who are available for chatting and the channels they are in. This is because ephemeral-roles leverages the Discord feature that the member list in servers will group together members by role right out of the box.

When a member changes or disconnects from voice channels, even across Discord servers, Ephemeral Roles will account for the change and automatically revoke/reissue ephemeral roles as appropriate.

Example Usage

Orange roles below are automatically managed by Ephemeral Roles
Ephemeral Roles action example
Ephemeral Roles static example
Ephemeral Roles example role list


A Prometheus and Grafana instance have been set up to monitor Ephemeral Roles metrics.

Contributing to the project

Contributions are very welcome! Please follow the guidelines below:

  • Open an issue describing the bug or enhancement
  • Fork the develop branch and make your changes
    • Try to match current naming conventions as closely as possible
    • Try to keep changes small and incremental with appropriate new unit tests
  • Create a Pull Request with your changes against the develop branch

This project is equipped with a full CI / CD pipeline:

  • Linting and unit tests will be automatically run with the PR, providing feedback if any additional changes need to be made
  • Merge to master will automatically deploy the changes live