编写你的第一个功能插件
恭喜你掌握了 SDK 的核心语法!现在就让我们把学到的一切融会贯通,从零写一个具备群聊互动、运势抽签和防刷屏机制的完整实用小工具吧!
目标功能设计
我们要编写的脚本名为 fun_bot.py,它将拥有以下三大本领:
- 关键词运势签:收到
抽签时,随机生成一条吉凶评价并艾特群友; - 反弹戳一戳:当群友在群里双击戳 Bot 的头像时,Bot 会机智地反向戳回去或者娇憨吐槽;
- 撤回指令:当 Master(主人)发送
撤回引用某条消息时,执行消息撤回。
完整可运行代码 (fun_bot.py)
python
# -*- coding: utf-8 -*-
import random
import asyncio
from developTools.adapters.websocket_adapter import WebSocketBot
from developTools.event.events import (
GroupMessageEvent,
PokeNotifyEvent
)
from developTools.message.message_chain import MessageChain
from developTools.message.message_components import Text, At
# 1. 建立正向 WebSocket 客户端连接
# 请确保你的 SnowLuma / NapCat 协议端开启了正向 ws 且端口匹配
bot = WebSocketBot(uri="ws://127.0.0.1:3001")
# 主人的 QQ 号
MASTER_ID = 1840094972
# 签文池
FORTUNE_LIST = [
"大吉!今天出门可能会捡到猫猫或者好吃的草莓蛋糕哦~ 🍓",
"中吉!写代码一次编译通过,完全没有 Bug!✨",
"小吉!群友会给你发很多超有趣的表情包~",
"末吉!今天适合窝在被窝里看番摸鱼呢...",
"大凶!杂鱼~ 赶紧抱抱猫娘消消灾吧!❤"
]
# 2. 监听群消息事件
@bot.on(GroupMessageEvent)
async def handle_fortune(event: GroupMessageEvent):
text = event.pure_text.strip()
# 抽签功能
if text in ["抽签", "今日运势"]:
fortune = random.choice(FORTUNE_LIST)
reply = MessageChain([
At(qq=event.sender.user_id),
Text(f"
🔮 【今日签文】
{fortune}")
])
await bot.send(event, reply)
bot.logger.info(f"为用户 {event.sender.user_id} 发放了运势签文")
# 主人专属撤回测试
elif text == "撤回" and event.sender.user_id == MASTER_ID:
# 如果引用了某条消息
if hasattr(event, "reply") and event.reply:
target_mid = event.reply.message_id
await bot.delete_msg(target_mid)
await bot.send(event, "已遵从主人的吩咐撤回目标消息喵~")
# 3. 监听戳一戳事件
@bot.on(PokeNotifyEvent)
async def handle_poke(event: PokeNotifyEvent):
# 如果被戳的人是 Bot 自己
# 注意:event.target_id 为被戳者,event.user_id 为发起者
if event.target_id == bot.id or event.target_id != event.user_id:
poker_qq = event.user_id
# 发送一段调皮吐槽
await bot.send_group_msg(
group_id=event.group_id,
message=MessageChain([
At(qq=poker_qq),
Text(" 别戳啦!脸蛋都要被你戳肿了喵~ 爪子抓你哦!(•̀⤙•́ )")
])
)
# 4. 启动机器人
if __name__ == "__main__":
bot.logger.info("小助手启动中,等待协议端建立连接...")
bot.run()运行与测试
- 确认协议端已运行在
ws://127.0.0.1:3001; - 打开终端运行:
python fun_bot.py; - 在任意群聊中发送
抽签,机器人立刻带格式艾特你回签; - 双击机器人的头像戳一戳,看看它俏皮的反击!
你看,利用 SDK 构建一个属于你自己的二次元聊天助手就是这么纯粹与简单!