# Voicecord: keeping a Discord account permanently connected to a voice channel

> A short Python script that logs into Discord with a user token, joins a voice channel and holds the connection open, with a status mode and mute options. The repository is explicit that this breaks Discord's terms of service and that accounts can be suspended for using it.

**SealedSaucer/Voicecord** — Make Your Discord Account 24/7 On Voice Channels!

- Repository: https://github.com/SealedSaucer/Voicecord
- Stars: 757 · Forks: 431
- Language: Python
- License: GPL-3.0
- Published: 2026-10-21 · Updated: 2026-10-21 · Language: en
- Canonical page: https://hysenlabs.com/projects/sealedsaucer-voicecord

## What the script actually does, in one paragraph

Voicecord is a Python script whose entire stated purpose is to make your Discord account stay 24/7 on voice channels. The README's headline is the feature list and it is short.

The script is described as secure, it supports stage channels, your account stays online around the clock, it supports all three status modes of Online, Idle and Do Not Disturb, and it can be used on any platform that supports Python.

That is the whole product. The repository contains four files: the LICENSE, the README, main.py and requirements.txt. There is no package structure, no configuration file, no test suite and no release history. The GitHub releases list is empty.

The last push was on 2026-04-28, the repository is not archived, and the project is licensed under the GNU General Public License.

The mechanism, as far as the documentation describes it, is that the script authenticates with a user token rather than a bot token, connects to the Discord gateway over a websocket, and holds the voice connection open. The two dependencies in requirements.txt, requests and websockets, are exactly what that story needs: one for the HTTP calls the Discord API needs, one for the persistent gateway connection that keeps the session alive.

## The disclaimer is the most important paragraph in the README

The disclaimer comes before the features, and it is worth reading in full because it changes how every other part of the documentation should be read.

By using this code, you are automating your Discord Account. This is against Discord's Terms of Service and Community Guidelines. If not used properly, your account(s) might get suspended or terminated by Discord. The developer states they are not responsible for any consequences, and that you should use the software at your own risk and responsibility, with links to Discord's Terms of Service and Community Guidelines.

There is a second line in the same vein: this repository is in no way affiliated with, authorized by, maintained by, sponsored or endorsed by Discord Inc. or any of its affiliates or subsidiaries.

Then there is the warning, in the loudest typography in the document. DO NOT GIVE YOUR DISCORD TOKENS TO ANYONE. The reason given is concrete: giving your token to someone else gives them the ability to log into your account without the password or 2FA.

That last point is the one to dwell on, because it explains why the installation instructions look the way they do. The tool is designed around a credential that is not meant to be scriptable, so the whole thing runs on a manual token, and the project is essentially telling you that this credential must never leave your machine. The security claim in the feature list is about the token's handling rather than about the mechanism being sanctioned.

## Obtaining a user token by hand, and why the README walks you through it

The section on obtaining your token is the longest part of the documentation, and it is a browser developer tools walkthrough rather than an API key flow. The steps as the README gives them: log in to your Discord account, press Ctrl+Shift+I to open Chrome Developer Tools, go to the Network tab, keep it open and refresh the page, type /api in the filter search box, click the entry that has science as the Name, go to the Headers sub-menu, scroll down to an entry named Authorization, and copy the line next to it. The README repeats the instruction not to give it to anyone.

This is worth naming plainly rather than reproducing as a how-to. What the process retrieves is the same bearer credential your browser session uses, and it is a credential with account-wide reach. There is no scope negotiation, no expiry management, no rotation, and no audit trail. The README treats the manual extraction as a setup inconvenience, but the security reality is that you are extracting a session credential from your own browser and pasting it into a script that keeps it in memory for as long as it runs.

The contrast with how a bot should work is instructive. Discord's intended model for automation is a bot account with a token minted for the application, which the developer holds and which Discord issues with an explicit scope. A user token has none of those properties, which is exactly why the platform's terms forbid automating with it, and exactly why the documentation has to teach you to fish it out of a request header by hand.

## Installing it, and the four values you have to edit

The installation is a manual sequence with no packaging, and step three is where the configuration lives.

The steps are: install Python on your machine, making sure you add it to PATH. Download the repository and extract it. Open the main.py file and add your User Token, Guild (Server) ID and Channel ID. Modify the status mode or the mute and deaf option, True or False, if you want to make any adjustments. Save the file. Open command prompt inside the folder and run pip install -r requirements.txt. Once the packages are downloaded, either double-click the main.py file in order to run it, or open command prompt and run python main.py.

So the install command is:

```bash
pip install -r requirements.txt
```

and the run command is:

```bash
python main.py
```

The dependency list is two lines, requests and websockets, and there is no pinned version, no lock file and no virtual environment guidance. For a script whose entire job is to hold a long-lived authenticated connection, unpinned versions are a real fragility, because a major release of either library can change the connection behaviour that the script depends on.

The other detail worth flagging is step three. Everything is configured by editing source. There is no environment variable, no .env file, no command line flag. The token, the guild, the channel, the status mode and the mute and deaf flags are all literals inside main.py. The practical consequence is that anyone with read access to that file has your session token, and a git commit by accident publishes it. The README's warning about not giving the token to anyone is therefore a matter of file handling as much as of behaviour.

## Status modes, mute and deaf, and what the options are actually worth

The configurable surface is described in one line, and it is a small one.

There is a status mode, with the three values that Discord itself offers: Online, Idle and Do Not Disturb. And there is a mute and deaf option, set with True or False. Alongside that there is the choice of guild, that is server, and channel to join.

The status mode is the feature with an actual purpose beyond keeping the account visible. An account sitting in a voice channel that shows as Idle looks like a person who has stepped away, and a DND status looks like someone deliberately occupied. A client that is going to sit in a channel indefinitely looks odd if it appears permanently available, so setting Idle is the difference between a channel where a person might join and a channel with a bot in it.

The mute and deaf option works the same way it does in the Discord client. A muted client receives audio but sends none, and a deafened client receives none at all. Mute is the setting that makes sense for something that is only meant to occupy the channel, and deaf is the setting for a machine that is not going to process any audio but still wants the session to be real.

Stage channels are supported, which is a compatibility detail rather than a feature, and it means the script is not restricted to the older voice channel type.

What none of these options changes is the fundamental nature of the tool. It holds one session open in one channel, and it is not a bot framework: there is no event handling, no command parsing, no guild management, no way to respond to anything. The repository topics list discord-bot and discord-self-bot side by side, which is a fair summary of the ambiguity.

## Why this is the wrong tool for anything you care about

The reasons to avoid Voicecord are not subtle, and the project says most of them itself.

The first is that Discord's terms of service forbid it, and the project says so at the top. Using it means operating under a documented policy violation, which means the platform has a stated basis to act, and the project says accounts might get suspended or terminated. For an account with a server role, a friend list, history and a verified email, that is a real cost.

The second is the credential handling. A user token pasted into a source file, with no rotation, no expiry and no scoping, is a standing liability. It is the same credential your browser holds, so anything that reads the file or intercepts the process has account access, without needing your password or your second factor. The README's own warning about not giving the token to anyone is the tip of this.

The third is the engineering fragility. Two unpinned dependencies, a websocket that has to stay alive indefinitely, and a platform that changes its gateway behaviour regularly. There is no versioning discipline, no test suite, no CI, no releases and no changelog. When it breaks, you are debugging a script against a live service that does not promise you stability.

The fourth is that the alternative is obvious. Discord provides a documented bot API with a token you mint for a purpose, hosted by Discord, rate limited and maintained. If what you actually want is something to sit in a voice channel on your behalf, a bot account is the supported way to do it, and the difference in effort is smaller than the README's framing implies, because the bot token is the part that requires a developer portal setup rather than a browser developer tools extraction.

So the honest summary is that Voicecord is a working demonstration of a thing the platform asks you not to do, written in about a hundred lines, and the reason to use it is that it is easier than the supported path rather than that it is better.

## Conclusion

Adopt Voicecord only if you have a throwaway account and a self hosted or isolated machine, because the project states plainly that automating a Discord account violates the platform's terms of service and can get the account suspended or terminated. Do not adopt it for an account with any history or value, and do not point it at a server you are a member of without the owner's consent. Verify first that the channel and guild identifiers you put in main.py are correct, that the two dependencies install cleanly on your Python version, and that the machine running it is one where a terminated session would not take anything else with it.

## FAQ

### What does the Voicecord script do?

It automates a Discord account so it stays connected to a voice channel around the clock, supporting stage channels, the Online, Idle and Do Not Disturb status modes, and mute and deaf options. It runs on any platform that supports Python.

### Is using Voicecord against Discord's rules?

Yes, and the project says so in its disclaimer: by using this code you are automating your Discord account, which is against Discord's Terms of Service and Community Guidelines, and your account may be suspended or terminated.

### How do I install and run Voicecord?

Install Python and add it to PATH, download and extract the repository, edit main.py with your user token, guild ID and channel ID, then run pip install -r requirements.txt in the folder and start the script with python main.py or by double-clicking main.py.

### What does Voicecord depend on?

The requirements file lists two packages, requests and websockets, with no pinned versions. The script is otherwise self-contained, with the LICENSE, README, main.py and requirements.txt as the only files in the repository.

### Why does the Voicecord README warn so strongly about the token?

Because the tool needs a user token rather than a bot token, and giving that token to someone else gives them the ability to log into your account without the password or 2FA. The README says to copy it from the Authorization header in the browser's developer tools and never to give it to anyone.

### Is Voicecord still being worked on?

The repository is not archived and the last push was on 2026-04-28, but it has no GitHub releases at all. The licence is GPL-3.0, and the whole project is the LICENSE, README, main.py and requirements.txt.

## Sources

- [Issues](https://github.com/SealedSaucer/Voicecord/issues)
- [License: GPL-3.0](https://github.com/SealedSaucer/Voicecord/blob/main/LICENSE)
- [README](https://github.com/SealedSaucer/Voicecord/blob/main/README.md)
- [SealedSaucer/Voicecord on GitHub](https://github.com/SealedSaucer/Voicecord)

---

Hysen Labs editorial analysis, written from the project's own repository and release notes. Cite the canonical page: https://hysenlabs.com/projects/sealedsaucer-voicecord
