- Python 99.6%
- Dockerfile 0.4%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
|
Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled
Reminders sleep until the next one is due, logs older than 90 days are pruned, and cog reload stays off unless BOTSHOCK_RELOAD is set. The image installs Wyoming speech by default. |
||
| .github/workflows | ||
| botshock | ||
| docs | ||
| tests | ||
| .dockerignore | ||
| .env.example | ||
| .gitignore | ||
| .pre-commit-config.yaml | ||
| docker-compose.yml | ||
| Dockerfile | ||
| LICENSE | ||
| MANIFEST.in | ||
| PRIVACY.md | ||
| pyproject.toml | ||
| pytest.ini | ||
| README.md | ||
| requirements.txt | ||
| TERMS.md | ||
Bot Shock
Bot Shock is a Discord bot that connects to OpenShock and PiShock devices. It lets you control shock collars through Discord, schedule automated reminders, set up word triggers, and give trusted people permission to control your devices.
This project is still a work in progress.
Features
- OpenShock and PiShock Support: Works with both platforms using their respective APIs
- User Registration: Link your OpenShock or PiShock account to Discord
- Controller System: Grant specific users or roles permission to control your devices
- Scheduled Reminders: Set up one-time or recurring shock reminders
- Word Triggers: Create patterns that automatically trigger shocks when you say certain words in chat or, if you opt in, in voice
- Voice Triggers (opt-in): The bot can join a voice channel and run those same patterns against your speech
- Action Logging: Complete history of all device actions for transparency and safety
Quick Start
Using Docker (Recommended)
-
Create a directory and download the compose file:
mkdir botshock && cd botshock curl -O https://raw.githubusercontent.com/TastelessVoid/Bot-Shock/main/docker-compose.yml -
Generate an encryption key:
docker run --rm python:3.12-slim python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())" -
Edit
docker-compose.ymlwith your Discord bot token and encryption key. -
Start the bot:
docker compose up -d -
View logs:
docker compose logs -f
Building from Source
-
Clone the repository:
git clone https://github.com/TastelessVoid/Bot-Shock.git cd Bot-Shock -
Create and activate a virtual environment:
python3 -m venv venv source venv/bin/activate -
Install the bot:
pip install -e . -
Generate an encryption key:
botshock-keygen -
Create a
.envfile:DISCORD_TOKEN=your_discord_bot_token ENCRYPTION_KEY=your_generated_key -
Run the bot:
botshock
Basic Usage
For OpenShock Users
- Register your account:
/openshock setup - Add your devices (auto-fetched from API)
- Grant permissions to controllers:
/controllers add - Send shocks:
/shock
For PiShock Users
- Register your account:
/pishock setup - Add your devices using share codes:
/pishock add - Grant permissions to controllers:
/controllers add - Send shocks:
/shock
Common Commands
| Command | Description |
|---|---|
/shock |
Send a shock, vibration, or sound |
/controllers add |
Grant someone permission to control you |
/controllers list |
See who can control you |
/remind set |
Create a scheduled reminder |
/trigger add |
Create a word trigger |
/logs view |
View action history |
Documentation
For detailed information, see the docs directory:
- Installation Guide - Complete setup instructions
- Configuration Guide - All available settings
- Command Reference - Full list of commands
- User Guide - How to use the bot
- Troubleshooting - Common problems and solutions
Requirements
- Python 3.10 or higher
- Discord bot with message content intent enabled
- OpenShock account with API token, or PiShock account with API key
Privacy and Terms
- Privacy Policy - How your data is handled
- Terms of Service - Rules for using this software
License
This project is licensed under the MIT License. See the LICENSE file for details.
Safety Notice
This bot controls devices that can cause physical sensations. Always:
- Get clear consent from everyone involved
- Start with low intensity settings
- Have a way to stop the device quickly
- Set a personal safeword with
/safeword setso you can type or say it to halt controls - Only give controller access to people you trust completely
Use this software responsibly and consensually.