我来帮你配置 OpenClaw Discord 机器人,以下是完整的配置指南:

前期准备
创建 Discord 应用和机器人
- 访问 Discord 开发者门户
- 点击 "New Application",输入名称(如 "OpenClaw")
- 在左侧菜单中选择 "Bot"
- 点击 "Add Bot"
- 复制 Token(重要!不要泄露)
邀请机器人到服务器
生成邀请链接
- 在开发者门户的 "OAuth2" → "URL Generator"
- 勾选权限:
bot ├── Send Messages ├── Read Message History ├── Embed Links ├── Attach Files ├── Manage Messages(如果需要) └── Administrator(根据需求选择) - 复制生成的链接,在浏览器中打开邀请
基础配置(使用 discord.py)
安装依赖
pip install discord.py python-dotenv
项目结构
openclaw-bot/
├── main.py
├── config.py
├── .env
├── cogs/
│ ├── __init__.py
│ ├── moderation.py
│ ├── music.py
│ └── fun.py
└── requirements.txt
配置文件(.env)
PREFIX=!
# 可选:数据库、API 密钥等
DATABASE_URL=postgresql://...
OPENAI_API_KEY=sk-...
主程序(main.py)
import discord
from discord.ext import commands
import os
from dotenv import load_dotenv
# 加载环境变量
load_dotenv()
# 机器人配置
intents = discord.Intents.default()
intents.message_content = True
intents.members = True # 如果需要成员事件
bot = commands.Bot(
command_prefix=os.getenv('PREFIX', '!'),
intents=intents,
help_command=None # 自定义帮助命令
)
@bot.event
async def on_ready():
print(f'{bot.user} 已上线!')
print(f'服务器数量: {len(bot.guilds)}')
await bot.change_presence(
activity=discord.Game(name="使用 !help")
)
@bot.event
async def on_message(message):
if message.author == bot.user:
return
# 示例:响应特定关键词
if '你好' in message.content:
await message.channel.send(f'你好,{message.author.mention}!')
await bot.process_commands(message)
# 加载 Cogs(扩展模块)
async def load_cogs():
for filename in os.listdir('./cogs'):
if filename.endswith('.py'):
await bot.load_extension(f'cogs.{filename[:-3]}')
async def main():
async with bot:
await load_cogs()
await bot.start(os.getenv('DISCORD_TOKEN'))
if __name__ == '__main__':
import asyncio
asyncio.run(main())
扩展功能模块(Cogs)
示例:基础命令(cogs/basic.py)
import discord
from discord.ext import commands
class Basic(commands.Cog):
def __init__(self, bot):
self.bot = bot
@commands.command(name='ping')
async def ping(self, ctx):
"""检查机器人延迟"""
latency = round(self.bot.latency * 1000)
await ctx.send(f'🏓 Pong! 延迟: {latency}ms')
@commands.command(name='clear')
@commands.has_permissions(manage_messages=True)
async def clear(self, ctx, amount: int = 5):
"""清除消息"""
await ctx.channel.purge(limit=amount + 1)
await ctx.send(f'✅ 已清除 {amount} 条消息', delete_after=3)
async def setup(bot):
await bot.add_cog(Basic(bot))
示例:音乐功能(cogs/music.py)
import discord
from discord.ext import commands
import yt_dlp
class Music(commands.Cog):
def __init__(self, bot):
self.bot = bot
self.queue = []
self.playing = False
@commands.command(name='play')
async def play(self, ctx, *, query):
"""播放音乐"""
# 音乐播放逻辑
await ctx.send(f'🔍 搜索中: {query}...')
async def setup(bot):
await bot.add_cog(Music(bot))
高级配置
数据库集成(SQLite 示例)
import sqlite3
def init_db():
conn = sqlite3.connect('bot_data.db')
c = conn.cursor()
c.execute('''CREATE TABLE IF NOT EXISTS guilds
(id TEXT PRIMARY KEY, prefix TEXT, welcome_channel TEXT)''')
conn.commit()
conn.close()
错误处理
@bot.event
async def on_command_error(ctx, error):
if isinstance(error, commands.CommandNotFound):
await ctx.send("❌ 命令不存在,使用 !help 查看所有命令")
elif isinstance(error, commands.MissingPermissions):
await ctx.send("❌ 你没有执行此命令的权限")
部署选项
本地运行
python main.py
Docker 部署(Dockerfile)
FROM python:3.11-slim WORKDIR /app COPY requirements.txt . RUN pip install --no-cache-dir -r requirements.txt COPY . . CMD ["python", "main.py"]
使用 PM2(进程管理)
npm install -g pm2 pm2 start main.py --name "openclaw-bot" --interpreter python3
安全建议
-
保护令牌:
- 使用环境变量
- 不要将令牌提交到 Git
- 定期更换令牌
-
权限最小化:
- 只授予必要的权限
- 避免使用 Administrator 权限
-
速率限制处理:
from discord.ext import commands @commands.cooldown(1, 5, commands.BucketType.user) @commands.command() async def spam_command(ctx): pass
测试配置
创建测试脚本 test_bot.py:
import asyncio
from main import bot
async def test():
# 测试机器人功能
await bot.login(os.getenv('DISCORD_TOKEN'))
print("✅ 连接成功")
asyncio.run(test())
日志记录
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s'
)
logger = logging.getLogger('discord')
常见问题解决
-
机器人不上线:
- 检查令牌是否正确
- 检查网络连接
- 验证机器人是否被服务器封禁
-
命令不响应:
- 检查命令前缀
- 确认 intents 已正确设置
- 检查是否有权限限制
需要更多特定功能(如音乐、等级系统、自动化等)可以告诉我,我会提供相应配置!
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。