No description
  • Python 99.6%
  • Dockerfile 0.4%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
MissCorruption 7c9b283e81
Some checks failed
Build and Push Docker Image / build-and-push (push) Has been cancelled
Skip idle voice syncs, extra trigger queries, and unused API connections.
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.
2026-09-23 21:31:57 +02:00
.github/workflows Add versioning support to Docker setup: include build args and labels 2026-01-08 02:02:03 +01:00
botshock Skip idle voice syncs, extra trigger queries, and unused API connections. 2026-09-23 21:31:57 +02:00
docs Skip idle voice syncs, extra trigger queries, and unused API connections. 2026-09-23 21:31:57 +02:00
tests Skip idle voice syncs, extra trigger queries, and unused API connections. 2026-09-23 21:31:57 +02:00
.dockerignore Added docker compose 2025-12-28 15:02:55 +01:00
.env.example Add Wyoming STT so the bot can use the NAS faster-whisper instance. 2026-09-21 02:36:59 +02:00
.gitignore Added docker compose 2025-12-28 15:07:50 +01:00
.pre-commit-config.yaml Initial commit 2025-10-18 20:51:39 +02:00
docker-compose.yml Skip idle voice syncs, extra trigger queries, and unused API connections. 2026-09-23 21:31:57 +02:00
Dockerfile Skip idle voice syncs, extra trigger queries, and unused API connections. 2026-09-23 21:31:57 +02:00
LICENSE Initial commit 2025-10-18 20:51:39 +02:00
MANIFEST.in Snapshot working opt-in voice triggers. 2026-09-21 01:14:36 +02:00
PRIVACY.md Store Discord IDs instead of usernames, and drop raw API error bodies. 2026-09-23 21:31:11 +02:00
pyproject.toml Add Wyoming STT so the bot can use the NAS faster-whisper instance. 2026-09-21 02:36:59 +02:00
pytest.ini Initial commit 2025-10-18 20:51:39 +02:00
README.md Add a personal safeword that halts shocks until the user resumes. 2026-09-23 21:31:38 +02:00
requirements.txt Snapshot working opt-in voice triggers. 2026-09-21 01:14:36 +02:00
TERMS.md Rewrite terms of use and PRIVACY.md 2026-01-07 02:53:25 +01:00

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

  1. 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
    
  2. Generate an encryption key:

    docker run --rm python:3.12-slim python -c "from cryptography.fernet import Fernet; print(Fernet.generate_key().decode())"
    
  3. Edit docker-compose.yml with your Discord bot token and encryption key.

  4. Start the bot:

    docker compose up -d
    
  5. View logs:

    docker compose logs -f
    

Building from Source

  1. Clone the repository:

    git clone https://github.com/TastelessVoid/Bot-Shock.git
    cd Bot-Shock
    
  2. Create and activate a virtual environment:

    python3 -m venv venv
    source venv/bin/activate
    
  3. Install the bot:

    pip install -e .
    
  4. Generate an encryption key:

    botshock-keygen
    
  5. Create a .env file:

    DISCORD_TOKEN=your_discord_bot_token
    ENCRYPTION_KEY=your_generated_key
    
  6. Run the bot:

    botshock
    

Basic Usage

For OpenShock Users

  1. Register your account: /openshock setup
  2. Add your devices (auto-fetched from API)
  3. Grant permissions to controllers: /controllers add
  4. Send shocks: /shock

For PiShock Users

  1. Register your account: /pishock setup
  2. Add your devices using share codes: /pishock add
  3. Grant permissions to controllers: /controllers add
  4. 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:

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

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 set so you can type or say it to halt controls
  • Only give controller access to people you trust completely

Use this software responsibly and consensually.