discord机器人开发历程
前言
前面了解到可以做discord机器人,可以直接使用命令聊天,我就做了一个,基本上复现了我前面在服务器上面部署的AStrBot的QQ机器人,包含多种功能,而且这个我可以自己DIY,添加自己想要的功能,而不用被插件市场限制住,我前面也做了一个机器人,但是当时vibe coding还不是很成熟,我自己也不是很精通代码,所以就搁置了,随着各种code工具和AI的兴起,我也应着openclaw的热潮做了一个类似的。
一、shen-test
这是我做的第一个正式的机器人,包含多种功能,可以AI对话,它也可以用命令,并且对接了多种API。
总览
首先,使用/help命令可以显示出可以使用的所有内容。

基础功能
基础功能包括如下部分
(1)status
这是查看服务器的状态的命令,可以显示出链接状态,运行时间和当前的时间。

(2)models
这个命令可以切换AI对话所使用的模型,支持多种模型切换,包括硅基流动的各种模型、OpenRouter、DeepSeek等。

AI对话功能
这是机器人的核心功能,直接在频道里@机器人或者私信它,就可以进行AI对话。支持多轮对话上下文记忆,对话体验流畅自然。

值得一提的是,这个机器人还支持Mem0长期记忆功能,开启后AI可以记住你之前说过的内容,实现真正的个性化对话体验。
AI自动执行命令
这是我非常喜欢的一个功能,AI可以识别用户意图并自动执行对应的命令,无需手动输入斜杠命令。
比如:
- “上海的天气怎么样?” → 自动调用天气查询
- “给我看看今天的科技新闻” → 自动调用新闻
- “帮我画一只可爱的猫咪” → 自动调用生图
- “今天历史上发生了什么?” → 自动调用历史查询
- “10分钟后提醒我开会” → 自动设置提醒

信息查询功能
(1)weather 天气查询(API)
查询指定城市的天气信息,显示温度、湿度、风力等详细数据。

(2)news 新闻查询(API)
获取最新新闻,支持互联网、科技、世界等多个分类,可以指定数量和关键词搜索。

(3)history 历史上的今天(API)
查看历史上今天发生的重大事件,支持详细模式显示更多信息。

娱乐功能
(1)海龟汤 turtle
海龟汤是一种情境推理游戏,机器人会给出一道谜题,玩家通过提问来推理出完整的故事。
/turtle_start- 开始游戏- 直接提问 - 进行推理
/turtle_reveal- 揭晓答案/turtle_stop- 结束游戏

(2)fortune 今日宜忌(API)
查看今天的宜忌,类似老黄历的功能。

(3)star 星座运势(API)
查看指定星座的今日运势。

(4)liuren 小六壬
传统占卜方式,随机给你一个卦象解读。

(5)其他娱乐命令
/joke- 讲笑话/roll- 掷骰子/rps- 石头剪刀布/guess- 猜数字/quiz- 知识问答(API)/slots- 老虎机/girl- 随机美女图(API)/drama- 搜索短剧(API)

实用功能
(1)reminder 提醒功能
可以设置定时提醒,支持相对时间(如10分钟后)和绝对时间。
/reminder_set_minutes- 设置相对时间提醒/reminder_set_time- 设置绝对时间提醒/reminder_list- 查看提醒列表/reminder_delete- 删除提醒

(2)task 定时任务
可以设置每天定时执行的命令,比如每天早上自动推送天气或新闻。
/task add_command- 添加定时任务/task list- 查看任务列表/task delete- 删除任务

(3)persona 人设系统
可以切换不同的AI人设,让机器人以不同的性格和风格回复你。
/persona list- 查看所有人设/persona set- 切换人设/persona add- 添加新人设/persona delete- 删除人设

多媒体功能
(1)draw AI生图
使用Kolors模型进行AI绘图,支持多种尺寸。

(2)tts 语音回复
开启后,机器人会用Edge TTS将回复转换成语音发送,让对话更有趣味。
(3)asr 语音识别
发送音频文件,机器人会自动识别语音内容并转成文字。
二、shen-play
除了通用的助手机器人,我还做了一个AI对战的机器人,提供多种有趣的玩法。
(1)debate 多轮辩论
让两个AI模型针对一个话题进行辩论,可以设置多个回合,观看AI之间的精彩交锋。

(2)stance 立场投票器
让多个AI模型对某个话题表达立场和理由,然后让用户进行投票。

(3)story 三句接龙
随机挑选三个AI模型,让它们依次续写一个故事,看看会产生什么样的创意。

(4)haiku俳句
给定主题,AI会生成5-7-5格式的俳句。

三、技术实现
架构设计
整个项目使用Python开发,基于discord.py库实现Discord的交互。主要特点:
- 模块化设计:不同功能分离,便于维护和扩展
- 异步处理:使用async/await实现高效并发
- 配置分离:敏感信息通过配置文件管理
- 数据持久化:使用JSON存储提醒、任务等数据
使用的API和服务
- 硅基流动API:AI对话和生图
- 天行API:新闻、运势等功能
- 天气API:天气和历史查询
- OpenRouter:多模型支持
- Mem0:长期记忆功能
- Edge TTS:语音合成
- TeleSpeech:语音识别
部署方式
项目结构清晰,可以直接在服务器上运行:
1 | |
四、总结与展望
这个Discord机器人项目让我学到了很多,从最初的想法到现在的功能完善的机器人,过程中遇到了很多挑战,也收获了很多。主要成就感来自:
- 功能丰富:集成了聊天、查询、娱乐、实用工具等多种功能
- 用户友好:支持自然语言触发命令,降低了使用门槛
- 可扩展性强:模块化设计让添加新功能变得简单
未来计划:
- 添加更多API接口支持
- 优化AI对话的响应速度
- 增加更多娱乐玩法
- 支持多语言
如果你也想做一个自己的Discord机器人,欢迎参考这个项目,有问题可以一起交流!