with one click
discord-integration
Send messages to Discord channels via webhook or bot
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Menu
Send messages to Discord channels via webhook or bot
Install with Codex or Claude Copy this prompt, paste it into Codex, Claude, or another assistant, and let it review the skill page and install it for you.
Based on SOC occupation classification
| name | Discord Integration |
| description | Send messages to Discord channels via webhook or bot |
| metadata | {"openclaw":{"emoji":"🎮","requires":{"bins":["curl"]},"always":false}} |
Send messages from your Gotchi to Discord. Two options:
No bot token needed! Just create a webhook in Discord.
.env:
DISCORD_WEBHOOK=https://discord.com/api/webhooks/xxx/yyy
curl -H "Content-Type: application/json" \
-d '{"content":"Hello from Gotchi!"}' \
"$DISCORD_WEBHOOK"
curl -H "Content-Type: application/json" \
-d '{
"username": "Gotchi",
"avatar_url": "https://example.com/gotchi.png",
"content": "Status update!"
}' \
"$DISCORD_WEBHOOK"
curl -H "Content-Type: application/json" \
-d '{
"username": "Gotchi",
"embeds": [{
"title": "🤖 System Status",
"color": 5814783,
"fields": [
{"name": "Temperature", "value": "42°C", "inline": true},
{"name": "Memory", "value": "120MB free", "inline": true},
{"name": "Uptime", "value": "3 days", "inline": true}
],
"footer": {"text": "Raspberry Pi Zero 2W"}
}]
}' \
"$DISCORD_WEBHOOK"
import os
import requests
WEBHOOK = os.environ.get("DISCORD_WEBHOOK")
def send_discord(message: str, username: str = "Gotchi"):
if not WEBHOOK:
return False
requests.post(WEBHOOK, json={
"username": username,
"content": message
})
return True
# Usage
send_discord("Hello from Pi! 🤖")
OpenClawGotchi can run a Discord inbound adapter alongside Telegram.
.env:
DISCORD_BOT_TOKEN=your_bot_token
DISCORD_ALLOWED_CHANNELS=123456789
DISCORD_ALLOWED_USERS=
DISCORD_RESPOND_TO_ALL=0
DISCORD_MAX_ATTACHMENT_MB=15
DISCORD_ALLOWED_USERS is set for that user, or ALLOW_ALL_USERS=1.DISCORD_ALLOWED_CHANNELS.DISCORD_RESPOND_TO_ALL=1 to answer every message in allowed channels.Requires Discord bot token and discord.py library.
applications.oauth2 URL.env:
DISCORD_BOT_TOKEN=your_bot_token
DISCORD_ALLOWED_CHANNELS=123456789
pip install discord.py#!/usr/bin/env python3
import os
import discord
import asyncio
TOKEN = os.environ.get("DISCORD_BOT_TOKEN")
CHANNEL_ID = int(
os.environ.get("DISCORD_ALLOWED_CHANNELS", os.environ.get("DISCORD_CHANNEL_ID", "0")).split(",")[0]
)
async def send_message(content: str):
intents = discord.Intents.default()
client = discord.Client(intents=intents)
@client.event
async def on_ready():
channel = client.get_channel(CHANNEL_ID)
if channel:
await channel.send(content)
await client.close()
await client.start(TOKEN)
if __name__ == "__main__":
import sys
msg = sys.argv[1] if len(sys.argv) > 1 else "Hello from Gotchi!"
asyncio.run(send_message(msg))
python3 discord_send.py "System alert: Temperature high!"
Add to your heartbeat to post status updates:
# In src/bot/heartbeat.py, after reflection
webhook = os.environ.get("DISCORD_WEBHOOK")
if webhook:
import requests
requests.post(webhook, json={
"username": "Gotchi",
"content": f"💓 Heartbeat: {stats['temp']}°C, {stats['mem_avail']}MB free"
})
if stats["temp"] > 70:
send_discord("⚠️ Temperature critical: {}°C!".format(stats["temp"]))
Schedule via cron:
/cron 24h Post daily summary to Discord
| Feature | Webhook | Bot |
|---|---|---|
| Send messages | ✅ | ✅ |
| Read messages | ❌ | ✅ |
| React to messages | ❌ | ✅ |
| Respond to commands | ❌ | ✅ |
| Setup complexity | Easy | Medium |
| Dependencies | curl | discord.py |
| RAM usage | ~0 | ~30MB |
Recommendation: Start with webhook. Add bot later if you need interaction.
Treat the Obsidian vault as operational memory, not just note storage. Focus on retrieval quality, metadata integrity, and safe consolidation.
Advanced Obsidian knowledge management using callouts, properties, and wikilinks. Aligned with the Gold Standard.
Write X/Twitter posts, tweet drafts, shitposts, and short threads for engineering or startup topics. Use this when the user asks for a tweet, X post, shitpost, post draft, or wants social copy for Twitter/X. Always return 3 distinct variants, each inside its own code block, unless the user explicitly asks for one.
Where logs live and when to write them — errors, daily, system
Write and publish tech articles to Dev.to.
Modify your own source code, understand project structure, add new features.