Small Python application that updates your Discord custom status in real-time using your voice input & speech recognition to display what you're currently talking about.
- Fully configurable
- Converts your speech to text in real-time
- Updates your Discord status in the background with what you said
- Discord account
- Microphone for voice input
- Python 3.10 or higher
While this uses the same technology as clients like Vencord or BetterDiscord which have remained undetected, Discord technically prohibits automated status updates. Use at your own risk.
Note
We are using a message filter to make sure no naughty words accidentally slip into your discord status.
-
Clone or install this repository:
git clone https://github.com/JustKesha/discord-voice-status.git
cd discord-voice-status
-
Install the required dependencies:
pip install -r requirements.txt
-
Set up your configuration (see Configuration section below)
There are two steps in configuration:
Create a .env
file in the root directory with your token:
PY_DVS_DISCORD_TOKEN=paste_your_token_here
Follow any of these guides to get your Discord token:
https://www.youtube.com/results?search_query=how+to+get+discord+token
Warning
Never share your token or .env
file with anyone!
Edit the config.yaml file with your preferred settings:
# Discord Custom Status
status:
language: "en"
emoji: "💬"
update_interval: 10.0
filter: on
censor_mode: "first_last_visible"
# Input Settings
recording:
device_index: NULL
Parameter | Description | Accepted Values | Example |
---|---|---|---|
language | Language to use for speech recognition & filter | ISO 639 language code | "en" |
emoji | Emoji to display in status | Unicode symbol or <:name:id> ,use <a:name:id> for animated |
"📢" |
update_interval | How long each speech recording will take in seconds | Float: 1.0 - 30.0 |
6.0 |
filter | Whether or not to use naughty words filter, Currently supports the following languages: "en" , "ru" |
Boolean: on / off |
on |
censor_mode | Censoring mode to use for filter | "full" , "first_last_visible" or "first_visible" |
"first_visible" |
device_index | Preferred microphone's device index (0-N), use NULL for default |
0 , 1 , 2 ... or NULL |
NULL |
json_indent | Indentation amout to use for json logging, use NULL for none |
0 , 1 , 2 ... or NULL |
4 |
Device index is a number from 0-N, where N is the total number of devices connected.
- Rmk on the sound icon (bottom right)
- Choose "Sounds", then "Recording"
- Find your active microphone
- Under the name you will find controller information, like so:
10- USB PnP Audio Device
, where10
here is the device index
To start the bot, run from root:
python src/main.py
The bot will:
- Start listening to your microphone
- Once set time is out, run speech recognition
- Request Discord's API to set your custom status with resulting message
- Repeat until program terminated
- Make sure you're using Python 3.10 or higher
- Verify that your configuration and Discord token are correct
- Make sure the application is using the correct device
- If status updates stop working, restart the bot
Want to help develop this project? Check out the Issues tab!
Please follow these guidelines when contributing:
- Keep code style consistent
- Update documentation if needed
- Add any important values to config
- Test your changes thoroughly
Discord has strict rate limits for status updates:
- Maximum 1 update per 4 seconds (hard limit)
- Recommended update interval: 10-30 seconds
- Maximum custom status length: 128 characters
The bot automatically handles these limits based on your config.
This project is licensed under the MIT License - see the LICENSE file for details.
To support the project, just open an issue on GitHub to describe problems with your experience!