UNPKG

koishi-plugin-bilibili-notify-advanced-subscription

Version:
61 lines (59 loc) 5.18 kB
import { Schema } from "koishi"; import "koishi-plugin-bilibili-notify"; //#region src/index.ts const name = "bilibili-notify-advanced-subscription"; const Config = Schema.object({ subs: Schema.dict(Schema.object({ uid: Schema.string().required().description("订阅用户UID"), roomid: Schema.string().description("订阅用户直播间号,不填则会请求用户接口自动获取,但请求该接口容易风控"), dynamic: Schema.boolean().default(false).description("是否订阅用户动态"), live: Schema.boolean().default(false).description("是否订阅用户直播"), target: Schema.array(Schema.object({ platform: Schema.string().required().description("推送平台,例如onebot、qq、discord"), channelArr: Schema.array(Schema.object({ channelId: Schema.string().required().description("频道/群组号"), dynamic: Schema.boolean().default(true).description("动态通知"), dynamicAtAll: Schema.boolean().default(false).description("动态艾特全体"), live: Schema.boolean().default(true).description("直播通知"), liveAtAll: Schema.boolean().default(true).description("开播艾特全体"), liveGuardBuy: Schema.boolean().default(false).description("上舰通知"), wordcloud: Schema.boolean().default(true).description("弹幕词云通知"), liveSummary: Schema.boolean().default(true).description("直播总结通知") })).role("table").required().description("需推送的频道/群组详细设置") })).description("订阅用户需要发送的平台和频道/群组信息(一个平台下可以推送多个频道/群组)"), customLiveSummary: Schema.intersect([Schema.object({ enable: Schema.boolean().default(false).description("是否开启个性化直播总结") }), Schema.union([Schema.object({ enable: Schema.const(true).required(), liveSummary: Schema.array(String).default([ "🔍【弹幕情报站】本场直播数据如下:", "🧍‍♂️ 总共 -dmc 位-mdn上线", "💬 共计 -dca 条弹幕飞驰而过", "📊 热词云图已生成,快来看看你有没有上榜!", "👑 本场顶级输出选手:", "🥇 -un1 - 弹幕输出 -dc1 条", "🥈 -un2 - 弹幕 -dc2 条,萌力惊人", "🥉 -un3 - -dc3 条精准狙击", "🎖️ 特别嘉奖:-un4 & -un5", "你们的弹幕,我们都记录在案!🕵️‍♀️" ]).role("table").description("自定义直播总结语,开启弹幕词云自动发送。变量解释:-dmc代表总弹幕发送人数,-mdn代表主播粉丝牌子名,-dca代表总弹幕数,-un1到-un5代表弹幕发送条数前五名用户的用户名,-dc1到-dc5代表弹幕发送条数前五名的弹幕发送数量,数组每一行代表换行") }), Schema.object({})])]), customLiveMsg: Schema.intersect([Schema.object({ enable: Schema.boolean().default(false).description("是否开启个性化直播消息设置") }), Schema.union([Schema.object({ enable: Schema.const(true).required(), customLiveStart: Schema.string().description("自定义开播提示语,-name代表UP昵称,-follower代表当前粉丝数,-link代表直播间链接(如果使用的是QQ官方机器人,请不要使用),\\n为换行。例如-name开播啦,会发送为xxxUP开播啦"), customLive: Schema.string().description("自定义直播中提示语,-name代表UP昵称,-time代表开播时长,-watched代表累计观看人数,-link代表直播间链接(如果使用的是QQ官方机器人,请不要使用),\\n为换行。例如-name正在直播,会发送为xxxUP正在直播xxx"), customLiveEnd: Schema.string().description("自定义下播提示语,-name代表UP昵称,-follower_change代表本场直播粉丝数变,-time代表开播时长,\\n为换行。例如-name下播啦,本次直播了-time,会发送为xxxUP下播啦,直播时长为xx小时xx分钟xx秒") }), Schema.object({})])]), customCardStyle: Schema.intersect([Schema.object({ enable: Schema.boolean().default(false).description("是否开启自定义卡片颜色") }), Schema.union([Schema.object({ enable: Schema.const(true).required(), cardColorStart: Schema.string().pattern(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/).description("推送卡片的开始渐变背景色,请填入16进制颜色代码,参考网站:https://webkul.github.io/coolhue/"), cardColorEnd: Schema.string().pattern(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/).description("推送卡片的结束渐变背景色,请填入16进制颜色代码,参考网站:https://colorate.azurewebsites.net/"), cardBasePlateColor: Schema.string().pattern(/^#([A-Fa-f0-9]{6}|[A-Fa-f0-9]{3})$/).description("推送卡片底板颜色,请填入16进制颜色代码"), cardBasePlateBorder: Schema.string().pattern(/\d*\.?\d+(?:px|em|rem|%|vh|vw|vmin|vmax)/).description("推送卡片底板边框宽度,请填入css单位,例如1px,12.5rem,100%") }), Schema.object({})])]) }).collapse()) }); function apply(ctx, config) { ctx.emit("bilibili-notify/advanced-sub", config.subs); ctx.on("bilibili-notify/ready-to-recive", () => { ctx.emit("bilibili-notify/advanced-sub", config.subs); }); } //#endregion export { Config, apply, name };