完整示例
示例 1:群消息互通增强版
python
def on_load(lumen):
cfg = lumen.storage.read("config.json", {
"reply_keyword": "帮助",
"reply_text": "可用命令:查余额 / 签到 / 在线人数"
})
def on_group_message(pack, reply):
if pack.get("raw_message") == cfg["reply_keyword"]:
reply(cfg["reply_text"])
lumen.on("message.group.normal", on_group_message)
def on_unload(lumen):
pass示例 2:签到系统
python
import time
def on_load(lumen):
KEYWORD = "签到"
REWARD_RANGE = (10, 50)
def on_group_message(pack, reply):
if pack.get("raw_message") != KEYWORD:
return
user_id = str(pack.get("user_id"))
today = time.strftime("%Y-%m-%d")
data = lumen.storage.read("signin.json", {"last": {}, "total": {}})
if data["last"].get(user_id) == today:
reply("今天已经签到过了!")
return
import random
reward = random.randint(*REWARD_RANGE)
data["last"][user_id] = today
data["total"][user_id] = data["total"].get(user_id, 0) + reward
lumen.storage.write("signin.json", data)
reply(f"签到成功!获得 {reward} 金币,累计 {data['total'][user_id]} 金币")
lumen.on("message.group.normal", on_group_message)
lumen.logger.info("签到系统已启动")示例 3:自定义 WebAPI + 页面
python
def on_load(lumen):
# 注册 API
def handle_stats(request):
return {"code": 200, "data": {
"online": len(lumen.mc.online_players),
"players": lumen.mc.online_players,
}}
lumen.web.registerApi("GET", "/stats", handle_stats, need_auth=True)
# 挂载自定义页面到侧边栏
lumen.web.registerPage("数据面板", "assets/dashboard.html")
lumen.logger.info("数据面板已挂载")示例 4:监听 Endstone 原生事件
python
def on_load(lumen):
# 监听玩家破坏方块
def on_break(event):
player = event.player
block = event.block
lumen.logger.info(f"{player.name} 破坏了 {block.block_type} @ {block.location}")
# 通过 OneBot 转发到群
lumen.QClient.send_group_msg(
lumen.env.get("main_group"),
f"[事件] {player.name} 破坏了 {block.block_type}"
)
lumen.mc.listen("BlockBreakEvent", on_break)