This guide is for users of Bot Shock. It assumes the bot is already installed and running in your Discord server.
Bot Shock is a Discord bot that connects to OpenShock and PiShock devices. It lets you:
- Control shock devices through Discord commands
- Give specific people permission to control your device
- Set up scheduled reminders that trigger automatically
- Create word triggers that activate when you say certain things
- View a complete history of all actions
- Go to OpenShock and log in
- Click on your profile, then Settings
- Go to the API Tokens section
- Create a new token or copy an existing one
- Keep this token private
- Log in to your PiShock account
- Go to your account settings
- Find your username and API key
- You will also need the share code for each device you want to use
Run:
/openshock setup
A form will appear asking for your API token. Paste it and submit. The bot will verify your credentials and show you a list of devices to add.
Run:
/pishock setup
A form will appear asking for your username and API key. After registering, you need to add your devices manually with share codes.
During setup, the bot shows your available devices. Select the ones you want to use.
To add more devices later:
/openshock add
After registering, add each device using its share code:
/pishock add
A form will ask for the share code and an optional name. You can paste either the share code or the full PiShock share URL.
To get a share code from the PiShock app:
- Open the app and select your shocker
- Tap Share and create a new code
- Copy the code or share URL and paste it into the bot
By default, the bot assumes you are wearing your device. When you need to take it off, you can update your status:
/openshock device_status
This toggles between wearing and not wearing. When set to not wearing, controllers cannot send shocks to you. They will see an error message instead.
Use this when:
- Taking off the device temporarily
- You are unavailable for play
- You need a quick safety measure without removing permissions
Check your current status with:
/openshock check_device
The main command for sending a shock is:
/shock
Parameters:
user- Who to shock (yourself or someone who gave you permission)intensity- Strength from 1 to 100duration- Length in milliseconds (300 to 65535)action- Shock, Vibrate, or Soundshocker_id- Which device to use if you have multiple
Examples:
Shock yourself:
/shock intensity:30 duration:1000 action:Shock
Shock someone who gave you permission:
/shock user:@Alice intensity:40 duration:1500 action:Vibrate
Use your saved defaults:
/shock
The bot remembers your settings. When you use /shock without specifying all parameters, it uses your previous values.
To set your preferred defaults:
/preferences set_defaults intensity:30 duration:1000 action:Shock
View your current settings with:
/preferences view
Bot Shock uses a consent-based permission system. Nobody can control your device unless you explicitly allow them.
To let someone control your device:
/controllers add
A menu appears where you can select specific users, roles, or both. Choose the people you trust, review your selections, and confirm.
See who has permission:
/controllers list
This shows all users and roles that can control you, along with when permission was granted.
To revoke access:
/controllers remove user:@JohnDoe
Or remove a role:
/controllers remove role:@SomeRole
They lose access immediately.
Good practices:
- Only add people you trust completely
- Review your controller list regularly
- Remove permissions when relationships change
- Establish boundaries and safewords outside of Discord
Things to avoid:
- Adding people because you feel pressured
- Giving permissions just to test if the bot works
- Leaving old permissions active
- Assuming role-based permissions are always safe
Reminders are shock commands that run automatically at scheduled times.
/remind set time:"in 10 minutes" intensity:30 duration:1000 action:Shock
Time formats you can use:
in 5 minutesin 2 hourstomorrow at 3pmnext monday at 9am2024-12-25 14:30
Add the recurrence parameter to repeat:
/remind set time:"tomorrow at 8am" intensity:25 duration:1000 action:Vibrate recurrence:"every weekday"
Recurrence patterns:
every dayevery weekday(Monday through Friday)every 2 hoursevery monday at 10amevery 30 minutes
View all your reminders:
/remind list
Get details on a specific reminder:
/remind info reminder_id:42
Cancel a reminder:
/remind cancel reminder_id:42
Triggers automatically shock you when you send a message containing certain words or phrases.
- You create a trigger with a pattern to match
- When you send a message matching that pattern, the trigger activates
- The configured shock is sent
- A cooldown prevents the trigger from activating again for a set time
/trigger add intensity:30 duration:1000 action:Shock cooldown:60
A form appears asking for:
- Trigger Name (optional) - A description for your reference
- Pattern - The words or phrases to match
Pattern examples:
bad wordmatches "bad word"oops|mistake|whoopsmatches any of those words\bstupid\bmatches "stupid" as a whole word only
Test your patterns at regex101.com before creating triggers.
View all triggers:
/trigger list
Disable a trigger without deleting it:
/trigger toggle trigger_id:7 enabled:False
Re-enable it:
/trigger toggle trigger_id:7 enabled:True
Delete permanently:
/trigger remove trigger_id:7
Start with safe values:
- Intensity: 25 to 30 percent
- Duration: 1000 milliseconds (1 second)
- Cooldown: 60 to 120 seconds
Test carefully. Create the trigger with low intensity, test it with a few messages, check if the pattern is too broad or too narrow, then adjust as needed.
Every shock command is logged for transparency and safety.
/logs view
Parameters:
days- How far back to look (1 to 90, default is 7)page- Page number for long lists
Each entry shows who sent the command, who received it, the shock details, and whether it came from a manual command, reminder, or trigger.
Download your logs as a spreadsheet:
/logs export days:90
Logs provide accountability, help you detect unauthorized activity, let you analyze patterns, and give you documentation if you ever need it.
Review your logs regularly, especially if you have multiple controllers or triggers.
For new users:
- Begin with intensity around 20 to 30 percent
- Use short durations of 500 to 1000 milliseconds
- Test in a safe, private environment
- Gradually increase as you learn your limits
Before giving someone control:
- Discuss limits and expectations
- Establish safewords or signals outside of Discord
- Agree on maximum intensity and frequency
- Set clear rules about when control is active
Check these things weekly:
- Who has controller permissions
- What reminders are active
- What triggers are active
- Action logs for unusual activity
- That your device status is correct
If something goes wrong:
- Disable your device status immediately with
/openshock device_status - Disable triggers with
/trigger toggle trigger_id:X enabled:False - Cancel reminders with
/remind cancel reminder_id:X - Remove controller access with
/controllers remove user:@Person - If necessary, unregister completely with
/openshock unregister - Power off the physical device
Always have a way to stop things outside of Discord. Keep the OpenShock or PiShock app on your phone, know where the device power switch is, and have someone you trust available to help.
The bot stores your Discord user ID, your encrypted API token, your device IDs, who can control you, and the history of all shock commands.
Keep your Discord account secure, do not share your API token, and understand that whoever runs the bot can access the database.
Can I use the bot in DMs?
No, the bot only works in servers. This is for accountability and the permission system.
Can I control multiple people?
Yes, if each person gives you permission with /controllers add.
What happens if I lose my encryption key?
If you are the bot administrator, users will need to re-register with /openshock setup. If you are a user, the administrator will need to help you.
How do I know if someone tried to control me without permission?
Check your logs with /logs view. All attempts are recorded.
Can I use both OpenShock and PiShock?
Each registration is for one platform. If you want to use both, you would need separate registrations in different servers, or the bot administrator would need to support multiple accounts.
What if the API is down?
Commands will fail. Check the status page for your platform.
Can triggers activate in any channel?
Yes, in any channel the bot can see. Be careful in public channels.
- Check the Troubleshooting Guide for common problems
- Ask your server administrators
- Review the Command Reference
- Start with low intensity settings when testing
Your safety comes first. Do not hesitate to use emergency procedures if you need them.