Overview
OrcBot supports multiple communication channels with per-channel configuration for auto-reply, admin permissions, and channel-specific features.Telegram
Basic Configuration
string
Telegram bot token obtained from @BotFather.Policy: LOCKED - Critical authentication credential.Environment variable:
TELEGRAM_TOKENboolean
default:false
Enable automatic replies to all messages without requiring /commands.
Getting Started
1
Create a bot with BotFather
- Open Telegram and search for @BotFather
- Send
/newbotand follow the prompts - Copy the bot token provided
2
Configure OrcBot
orcbot.config.yaml
.env
3
Start the bot
4
Find your user ID
Send a message to your bot, then check logs or use the
/admin command to see your Telegram user ID.5
Add yourself as admin
orcbot.config.yaml
Commands
array
List of available Telegram commands displayed in the bot menu.
Rich Features
OrcBot provides enhanced Telegram UX through specialized skills:Inline Buttons
Send messages with interactive inline keyboard buttons.
Polls
Create native Telegram polls.
Reactions
React with emoji (falls back to reply if blocked).
Message Editing
Edit previously sent messages.
Pin Messages
Pin important messages in chats.
Progress Indicators
Show typing indicators during processing.
Example Configuration
orcbot.config.yaml
Basic Configuration
boolean
default:false
Enable WhatsApp channel integration.Policy: LOCKED - Channel configuration affects system architecture.
string
default:"~/.orcbot/whatsapp-session"
Path to WhatsApp session storage directory (for Baileys multi-device).
boolean
default:false
Enable automatic replies to all WhatsApp messages.
string
Owner JID for WhatsApp (format:
1234567890@s.whatsapp.net).Feature Flags
boolean
default:false
Enable replies to WhatsApp status updates.
boolean
default:false
Enable automatic reactions to messages.
boolean
default:false
Enable context profiling for better conversation understanding.
Getting Started
1
Enable WhatsApp
orcbot.config.yaml
2
Start OrcBot
3
Scan QR code
- Open WhatsApp on your phone
- Go to Settings → Linked Devices
- Tap “Link a Device”
- Scan the QR code shown in the terminal
4
Find your JID
Send a message to the bot, then check logs for your JID (format:
1234567890@s.whatsapp.net).5
Set owner and admins
orcbot.config.yaml
Multi-Modal Support
WhatsApp channels support:- Text messages - Standard text communication
- Voice notes - Send TTS-generated voice messages
- Images - Send and analyze images
- Documents - Send files and documents
- Reactions - React to messages with emoji
Example Configuration
orcbot.config.yaml
Discord
Basic Configuration
string
Discord bot token obtained from the Discord Developer Portal.Policy: LOCKED - Critical authentication credential.Environment variable:
DISCORD_TOKENboolean
default:false
Enable automatic replies to all messages (not just mentions).
Getting Started
1
Create Discord application
- Go to Discord Developer Portal
- Click “New Application”
- Name your bot and create it
2
Create bot user
- Go to the “Bot” section
- Click “Add Bot”
- Enable these Privileged Gateway Intents:
- Presence Intent
- Server Members Intent
- Message Content Intent (required)
3
Get bot token
Under the “Bot” section, click “Reset Token” and copy the token.
4
Configure OrcBot
orcbot.config.yaml
.env
5
Invite bot to server
- Go to “OAuth2” → “URL Generator”
- Select scopes:
bot,applications.commands - Select permissions:
Send Messages,Read Messages,Attach Files - Copy the generated URL and open it to invite the bot
6
Find your user ID
- Enable Developer Mode in Discord (Settings → Advanced)
- Right-click your username and select “Copy User ID”
7
Add yourself as admin
orcbot.config.yaml
Example Configuration
orcbot.config.yaml
Slack
Basic Configuration
string
Slack bot token (starts with
xoxb-).Policy: LOCKED - Critical authentication credential.Environment variable: SLACK_BOT_TOKENstring
Slack app-level token for Socket Mode (starts with
xapp-).Policy: LOCKED - Critical authentication credential.Environment variable: SLACK_APP_TOKENstring
Slack signing secret for webhook verification.Policy: LOCKED - Critical authentication credential.Environment variable:
SLACK_SIGNING_SECRETboolean
default:false
Enable automatic replies to all messages (not just mentions).
Getting Started
1
Create Slack app
- Go to Slack API
- Click “Create New App” → “From scratch”
- Name your app and select a workspace
2
Enable Socket Mode
- Go to “Socket Mode” in the sidebar
- Enable Socket Mode
- Generate an app-level token with
connections:writescope - Copy the token (starts with
xapp-)
3
Configure bot scopes
Go to “OAuth & Permissions” → “Scopes” and add:
chat:write- Send messageschannels:read- View channelschannels:history- Read messages in public channelsgroups:history- Read messages in private channelsim:history- Read direct messagesmpim:history- Read group messagesusers:read- View usersfiles:write- Upload files
4
Enable event subscriptions
- Go to “Event Subscriptions”
- Enable events
- Subscribe to bot events:
message.channelsmessage.groupsmessage.immessage.mpim
5
Install to workspace
- Go to “Install App”
- Click “Install to Workspace”
- Copy the Bot User OAuth Token (starts with
xoxb-)
6
Get signing secret
Go to “Basic Information” → “App Credentials” and copy the Signing Secret.
7
Configure OrcBot
orcbot.config.yaml
.env
8
Find your user ID
- Click on your profile in Slack
- Click “More” → “Copy member ID”
9
Add yourself as admin
orcbot.config.yaml
Example Configuration
orcbot.config.yaml
OrcBot uses Socket Mode for Slack, which doesn’t require exposing a public endpoint. This makes it easier to run behind firewalls.
Basic Configuration
boolean
default:false
Enable email channel integration (SMTP + IMAP).
boolean
default:false
Enable automatic replies to incoming emails.
string
Email address for the bot.Environment variable:
EMAIL_ADDRESSstring
Display name for outgoing emails.
string
default:"OrcBot response"
Default subject line for outgoing emails.
number
default:15000
Socket timeout for email operations in milliseconds.Environment variable:
EMAIL_SOCKET_TIMEOUT_MSSMTP Configuration (Sending)
string
SMTP server hostname (e.g.,
smtp.gmail.com).Environment variable: SMTP_HOSTnumber
default:587
SMTP server port (587 for TLS, 465 for SSL).Environment variable:
SMTP_PORTboolean
default:false
Use SSL/TLS for SMTP connection (port 465).Environment variable:
SMTP_SECUREboolean
default:true
Use STARTTLS for SMTP connection (port 587).Environment variable:
SMTP_STARTTLSstring
SMTP authentication username.Environment variable:
SMTP_USERNAMEstring
SMTP authentication password.Environment variable:
SMTP_PASSWORDIMAP Configuration (Receiving)
string
IMAP server hostname (e.g.,
imap.gmail.com).Environment variable: IMAP_HOSTnumber
default:993
IMAP server port (993 for SSL).Environment variable:
IMAP_PORTboolean
default:true
Use SSL for IMAP connection.Environment variable:
IMAP_SECUREstring
IMAP authentication username.Environment variable:
IMAP_USERNAMEstring
IMAP authentication password.Environment variable:
IMAP_PASSWORDExample Configuration (Gmail)
1
Create app password
- Go to Google Account Security
- Enable 2-Step Verification if not already enabled
- Go to “App passwords”
- Generate a new app password for “Mail”
2
Configure OrcBot
orcbot.config.yaml
.env
3
Add admins
orcbot.config.yaml
Admin Permissions
object
Per-channel admin user allowlists. Admins have access to elevated commands and skills.Policy: LOCKED - Security-critical configuration.
Admin-Only Skills
These skills require admin privileges:run_command- Execute shell commandscreate_custom_skill- Create executable pluginsmanage_config- Modify configurationspawn_agent- Create worker agentsdelegate_task- Orchestrate taskssystem_check- Verify system dependenciesself_repair_skill- Repair broken plugins
Admin status is checked per-channel. A user who is admin on Telegram is not automatically admin on Discord.
Multi-Channel Strategy
Configure multiple channels simultaneously:orcbot.config.yaml
Session Scope
enum
default:"per-channel-peer"
Conversation session isolation:
main- Single global session (all users share memory)per-peer- Separate session per user (user’s Telegram and Discord are same session)per-channel-peer- Separate session per channel-user (user’s Telegram and Discord are different sessions)
Identity Linking
object
Link user identities across channels so the agent recognizes the same person.This allows:
- Shared user profile across channels
- Consistent conversation context
- Cross-channel admin permissions
Identity linking is useful when
sessionScope: per-peer but you want specific users to be recognized across channels.