koishi-plugin-bellabot
Version:
[](https://www.npmjs.com/package/koishi-plugin-bellabot)
1,146 lines (1,140 loc) • 80.8 kB
JavaScript
var __create = Object.create;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __getProtoOf = Object.getPrototypeOf;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __name = (target, value) => __defProp(target, "name", { value, configurable: true });
var __export = (target, all) => {
for (var name3 in all)
__defProp(target, name3, { get: all[name3], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(
// If the importer is in node compatibility mode or this is not an ESM
// file that has been converted to a CommonJS file using a Babel-
// compatible transform (i.e. "__esModule" has not been set), then set
// "default" to the CommonJS "module.exports" for node compatibility.
isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", { value: mod, enumerable: true }) : target,
mod
));
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.tsx
var src_exports = {};
__export(src_exports, {
Config: () => Config2,
apply: () => apply2,
inject: () => inject,
name: () => name2,
usage: () => usage
});
module.exports = __toCommonJS(src_exports);
var import_koishi3 = require("koishi");
var import_url = require("url");
var import_path = require("path");
// src/signin.tsx
var import_koishi = require("koishi");
var import_jsx_runtime = require("@satorijs/element/jsx-runtime");
var timeGreetings = [
{ range: [0, 6], message: "凌晨好" },
{ range: [6, 11], message: "上午好" },
{ range: [11, 14], message: "中午好" },
{ range: [14, 18], message: "下午好" },
{ range: [18, 20], message: "傍晚好" },
{ range: [20, 24], message: "晚上好" }
];
var levelInfos = [
{ level: 1, level_line: 1e3 },
{ level: 2, level_line: 3e3 },
{ level: 3, level_line: 7e3 },
{ level: 4, level_line: 15e3 },
{ level: 5, level_line: 3e4 },
{ level: 6, level_line: 5e4 },
{ level: 7, level_line: 8e4 },
{ level: 8, level_line: 17e4 },
{ level: 9, level_line: 35e4 },
{ level: 10, level_line: 8e5 }
];
var Signin = class {
static {
__name(this, "Signin");
}
ctx;
cfg;
constructor(context, config) {
this.ctx = context;
this.cfg = config;
this.ctx.database.extend("bella_sign_in", {
id: "string",
name: "string",
time: "string",
point: "unsigned",
count: "unsigned",
current_point: "unsigned",
working: "boolean",
stime: "unsigned",
wpoint: "unsigned",
wktimecard: "unsigned",
wktimespeed: "boolean"
});
}
// 0:已签到, 1:签到成功, 2:未签到, 3:抽奖
// { "cmd":"get", "status": 1, "getpoint": signpoint, "signTime": signTime, "allpoint": signpoint, "count": 1 };
// 参数:session, 返回:json
async callSignin(session) {
var name3;
if (this.ctx.database && this.cfg.signin.callme)
name3 = session.username;
if (!name3 && this.cfg.signin.callme)
name3 = session.author.name;
else
name3 = session.username;
name3 = name3.length > 12 ? name3.substring(0, 12) : name3;
let signTime = import_koishi.Time.template("yyyy-MM-dd hh:mm:ss", /* @__PURE__ */ new Date());
let all_point = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.point;
let time = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.time;
let count = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.count;
let dbname = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.name;
let signpoint = import_koishi.Random.int(this.cfg.signin.signpointmin, this.cfg.signin.signpointmax);
let nowPoint = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.current_point;
if (!dbname)
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), name: name3 }]);
if (!all_point && !time) {
if (this.ctx.monetary)
await this.ctx.monetary.gain(session.user.id, signpoint, "Bella");
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), name: name3, time: signTime, point: Number(signpoint), count: 1, current_point: Number(signpoint) }]);
return { "cmd": "get", "status": 1, "getpoint": signpoint, "signTime": signTime, "allpoint": signpoint, "count": 1 };
}
if (Number(time.slice(8, 10)) - Number(signTime.slice(8, 10))) {
this.ctx.logger(`userID: ${session.user.id}`);
if (this.ctx.monetary)
await this.ctx.monetary.gain(session.user.id, signpoint, "Bella");
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), name: name3, time: signTime, point: Number(all_point + signpoint), count: count + 1, current_point: Number(signpoint) }]);
return { "cmd": "get", "status": 1, "getpoint": signpoint, "signTime": signTime, "allpoint": all_point + signpoint, "count": count + 1 };
}
return { "cmd": "get", "status": 0, "getpoint": nowPoint, "signTime": signTime, "allpoint": all_point, "count": count };
}
// 参数:session, 返回:json
async signQuery(session) {
let all_point = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.point;
let time = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.time;
let count = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.count;
let current_point = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.current_point;
let nowTime = import_koishi.Time.template("yyyy-MM-dd hh:mm:ss", /* @__PURE__ */ new Date());
if (Number(time.slice(8, 10)) - Number(nowTime.slice(8, 10))) {
return { "cmd": "query", "status": 2, "getpoint": current_point ? current_point : 0, "signTime": time ? time : "暂无数据", "allpoint": all_point ? all_point : 0, "count": count ? count : 0 };
}
return { "cmd": "query", "status": 0, "getpoint": current_point ? current_point : 0, "signTime": time ? time : "暂无数据", "allpoint": all_point ? all_point : 0, "count": count ? count : 0 };
}
// 参数:session,point 返回:<> <at />string </>
async lottery(session, point) {
let all_point = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.point;
if (!point || point < 0 || isNaN(Number(point)))
return "请输入有效积分";
else if (all_point - point < 0)
return "积分不足!";
else {
if (import_koishi.Random.bool(this.cfg.signin.lotteryOdds)) {
if (this.ctx.monetary)
await this.ctx.monetary.cost(session.user.id, point, "Bella");
var result = this.rangePoint(point);
if (this.ctx.monetary)
await this.ctx.monetary.gain(session.user.id, result.final_point, "Bella");
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), point: Number(all_point - point + result.final_point) }]);
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("at", { id: session.userId }),
"\n",
result.msg,
" \n 消耗",
point,
"积分抽得: ",
result.final_point,
"积分"
] });
} else {
if (this.ctx.monetary)
await this.ctx.monetary.cost(session.user.id, point, "Bella");
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), point: Number(all_point - point) }]);
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("at", { id: session.userId }),
"\n 获得积分:0\n",
import_koishi.Random.pick([
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "赌狗赌狗,赌到最后一无所有!" }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "哦吼,积分没喽!" }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "谢谢你的积分!" }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "积分化作了尘埃" }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "哈哈!大大大非酋" }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "杂鱼♡~大哥哥连这点积分都赌掉了呢~" }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "杂鱼♡~杂鱼♡~" }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "摸摸,杂鱼大哥哥不哭~" })
])
] });
}
}
}
// 参数:session 返回:<>string</>
async workstart(session) {
var name3;
if (this.ctx.database && this.cfg.signin.callme)
name3 = session.user.name;
if (!name3 && this.cfg.signin.callme)
name3 = session.author.name;
else
name3 = session.username;
let working = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.working;
let wktimecard = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.wktimecard;
let nowTime = Math.floor(Date.now() / 1e3 / 60);
if (working)
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
name3,
'打工任务正在进行,可以使用"结束打工"结束任务'
] });
else {
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), working: true, stime: nowTime }]);
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
name3,
"打工开始^v^\nTip: 打工时间最少半小时,最多为",
8 + wktimecard,
"小时哦~"
] });
}
}
// 参数:session 返回:<>string</>
async workend(session) {
var name3;
if (this.ctx.database && this.cfg.signin.callme)
name3 = session.user.name;
if (!name3 && this.cfg.signin.callme)
name3 = session.author.name;
else
name3 = session.username;
let all_point = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.point;
let working = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.working;
let stime = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.stime;
let wpoint = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.wpoint;
let wktimecard = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.wktimecard;
let wkspeed = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.wktimespeed;
let nowTime = Math.floor(Date.now() / 1e3 / 60);
if (working) {
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), working: false }]);
var time = nowTime - stime;
time = wktimecard ? time >= (8 + wktimecard) * 60 ? (8 + wktimecard) * 60 : time : time >= 8 * 60 ? 8 * 60 : time;
var point = time < 30 ? 0 : wkspeed ? Math.floor(time * this.levelJudge(all_point).level) : Math.floor(time / 2 * this.levelJudge(all_point).level);
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), point: all_point + point, wpoint: wpoint + point }]);
if (this.ctx.monetary)
await this.ctx.monetary.gain(session.user.id, point, "Bella");
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
name3,
"打工结束啦!\n本次打工",
Math.floor(time / 60),
"小时",
time % 60,
"分钟\n获得积分:",
point
] });
} else
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
name3,
'还没有正在进行的打工任务哦,使用"开始打工"命令可以进行打工哦'
] });
}
// 参数:session 返回:<>string</>
async workcheck(session) {
var name3;
if (this.ctx.database && this.cfg.signin.callme)
name3 = session.user.name;
if (!name3 && this.cfg.signin.callme)
name3 = session.author.name;
else
name3 = session.username;
let all_point = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.point;
let working = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.working;
let stime = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.stime;
let wpoint = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.wpoint;
let nowTime = Math.floor(Date.now() / 1e3 / 60);
var time = nowTime - stime;
let wktimecard = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.wktimecard;
let wkspeed = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.wktimespeed;
time = wktimecard ? time >= (8 + wktimecard) * 60 ? (8 + wktimecard) * 60 : time : time >= 8 * 60 ? 8 * 60 : time;
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
name3,
working ? "正在打工" : "当前没有打工",
"\n 打工时间: ",
working ? `${Math.floor(time / 60)}小时${time % 60}分钟` : "暂无信息",
"\n 可获积分: ",
working ? time < 30 ? 0 : wkspeed ? Math.floor(time * this.levelJudge(all_point).level) : Math.floor(time / 2 * this.levelJudge(all_point).level) : 0,
"\n 打工总获得积分: ",
wpoint ? wpoint : 0
] });
}
// 参数:session,count,user 返回:<>string</>
async givepoint(session, count, user) {
let all_point = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.point;
if (!user)
user = session.userId;
if (!count)
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "请输入有效数字" });
if (count < 0 && all_point - Math.abs(count) <= 0)
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "对方没有这么多积分" });
else if (this.cfg.signin.superuser.includes(session.userId)) {
if (this.ctx.monetary)
await this.ctx.monetary.gain(session.user.id, count, "Bella");
await this.ctx.database.upsert("bella_sign_in", [{ id: String(user.replace(/.*:/gi, "")), point: count < 0 ? all_point - Math.abs(count) : all_point + count }]);
return /* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
"成功给",
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("at", { id: user.replace(/.*:/gi, "") }),
count < 0 ? "减去" : "补充",
count,
"点积分."
] });
} else {
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "没有权限!" });
}
}
async shop(session) {
var shoptimes = 5;
await session.send(/* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "所有商品: \n 序号 名称 价格(积分)\n 1. 打工加时卡 3000\n 2. 打工翻倍卡 6000\n 请输入序号购买,$取消购买" }));
while (shoptimes) {
let sel = await session.prompt(3e4);
if (sel == "$" || sel == "¥" || !sel)
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: "取消购买,欢迎下次光临!" });
else
await session.send(/* @__PURE__ */ (0, import_jsx_runtime.jsxs)(import_jsx_runtime.Fragment, { children: [
await this.shopJudge(session, Number(sel)),
"\n可以继续输入序号购买商品哦~(最多5次)"
] }));
shoptimes--;
}
return /* @__PURE__ */ (0, import_jsx_runtime.jsx)(import_jsx_runtime.Fragment, { children: '连续购买次数上限,请重新使用"积分商店"命令' });
}
async rankUsers(count) {
const signinData = await this.ctx.database.get("bella_sign_in", {
count: { $gt: 0 }
});
const sortedData = signinData.sort((a, b) => b.point - a.point).slice(0, count).map((item, index) => /* @__PURE__ */ (0, import_jsx_runtime.jsxs)("tr", { style: "background-color: #f2f2f2;", children: [
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { style: "padding: 12px; border: 1px solid #ddd;", children: index + 1 }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { style: "padding: 12px; border: 1px solid #ddd;", children: item.name ? item.name : item.id }),
/* @__PURE__ */ (0, import_jsx_runtime.jsx)("td", { style: "padding: 12px; border: 1px solid #ddd;", children: item.point })
] }));
return sortedData;
}
rangePoint(count) {
var cnt = import_koishi.Random.int(0, 8);
let result = {
final_point: 0,
msg: "string"
};
switch (cnt) {
case 0:
result = { final_point: Math.floor(count * 0.2), msg: "哈哈,赌狗!" };
break;
case 1:
result = { final_point: Math.floor(count * 0.5), msg: "伤害减半!" };
break;
case 2:
result = { final_point: Math.floor(count * 0.8), msg: "不过如此" };
break;
case 3:
result = { final_point: Math.floor(count * 1.2), msg: "运气不错!" };
break;
case 4:
result = { final_point: Math.floor(count * 1.5), msg: "哇哦!欧皇!" };
break;
case 5:
result = { final_point: Math.floor(count * 2), msg: "双倍泰裤辣!" };
break;
case 6:
result.final_point = import_koishi.Random.bool(0.5) ? Math.floor(count * 3) : count;
result.msg = result.final_point - count ? "3倍!这是甚么运气!" : "欸嘿,虚晃一枪!";
break;
case 7:
result.final_point = import_koishi.Random.bool(0.3) ? Math.floor(count * 4) : count;
result.msg = result.final_point - count ? "太可怕了!是有什么欧皇秘诀吗" : "欸嘿,虚晃一枪!";
break;
default:
result.final_point = count;
result.msg = "欸嘿,虚晃一枪!";
break;
}
return result;
}
levelJudge(all_point) {
for (const levelInfo of levelInfos) {
if (all_point <= levelInfo.level_line) {
return levelInfo;
}
}
return levelInfos[levelInfos.length - 1];
}
getGreeting(hour) {
const greeting = timeGreetings.find(
(timeGreeting) => hour >= timeGreeting.range[0] && hour < timeGreeting.range[1]
);
return greeting ? greeting.message : "你好";
}
async shopJudge(session, select) {
let wktimecard = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.wktimecard;
let wktimespeed = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.wktimespeed;
let all_point = (await this.ctx.database.get("bella_sign_in", { id: String(session.userId) }))[0]?.point;
if (Number(select) == 1) {
var point_condition = all_point - 3e3 >= 0 ? true : false;
var shop_cnt = wktimecard <= 8 ? true : false;
if (point_condition && shop_cnt) {
if (this.ctx.monetary)
await this.ctx.monetary.cost(session.user.id, 3e3, "Bella");
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), point: all_point - 3e3, wktimecard: wktimecard + 1 }]);
return "购买成功!打工时长上限+1h(上限不得超过9h)";
} else if (!point_condition)
return "积分不足!";
else
return "购买次数达到上限";
}
if (Number(select) == 2) {
var point_condition = all_point - 6e3 >= 0 ? true : false;
if (point_condition && !wktimespeed) {
if (this.ctx.monetary)
await this.ctx.monetary.cost(session.user.id, 3e3, "Bella");
await this.ctx.database.upsert("bella_sign_in", [{ id: String(session.userId), point: all_point - 3e3, wktimespeed: true }]);
return "购买成功!打工获取积分翻倍(购买后永久生效)";
} else if (wktimespeed)
return "您已购买此商品";
else
return "积分不足!";
}
}
};
// src/jrys.tsx
var jrysJson = [
{
"fortuneSummary": "大吉+官运",
"luckyStar": "★★★★★★☆",
"signText": "根深蒂固,蒸蒸日上,如意吉祥,百事顺遂",
"unsignText": "进取富贵又如意,智达明敏扬名威,名利寿福皆此得,前途光茫好鸿图。外缘殊胜,容易得人之助力及予人好印象。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "一盛一衰,浮沉不常,自重自处,可保平安",
"unsignText": "人生有盛有衰,十年河西,十年河东。不论在顺利的时候的还是在倒霉的时候,都要做到自重自处,不能因胜利而洋洋自得,也不能因失败而一蹶不振,只要这样,才能平平安安!"
},
{
"fortuneSummary": "大吉",
"luckyStar": "★★★★★★☆",
"signText": "草木逢春,枯叶沾露,稳健着实,必得人望",
"unsignText": "挽回家运矣春光,顺调发展财辉煌,温和笃实阴阳合,稳健顺调得人望。顺风满帆而容易有所成就,易取富贵人生。外缘殊胜,容易得人之助力及予人好印象。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "薄弱无力,孤立无摇,外祥内苦,谋事难成",
"unsignText": "人生路上诸事不顺,自身能力之限制,经常迫于无耐。由于性格或人际关系上的问题,难遇贵人。经常一人处理所有事情,即使有天大的能力,总会遇到不能解决的问题,而这些问题会导致事业的失败。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "云遮半月,百隐风波,应自谨慎,始保平安",
"unsignText": "最近运势不好,有对你不利的事情(不好的事情要发生,自己办事情,说话要谨慎小心,才能避过这些。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "如走夜路,前途无光,希望不大,劳而无功",
"unsignText": "一生就像在夜晚里走路一样,想开创新天地,却部是难以大展拳脚,可用好做好现在的事情,等待时机,主动出击容易空手而回,此命需待贵人相助方容易成功。"
},
{
"fortuneSummary": "凶带吉",
"luckyStar": "★★★☆☆☆☆",
"signText": "半凶半吉,浮沉多端,始凶终吉,能保成功",
"unsignText": "所求之事,是吉凶参半。所要经历的,既有非你所愿、无法承受之痛苦,也有甘之如饴、顺风顺水之运气。无法如预期的稳定,不确定的因素对其本身影响很大。要老老实实接受磨难的考验,之后成功就会不期而遇。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "吉凶互见,一成一败,凶中有吉,吉中有凶",
"unsignText": "一生并不顺利,在顺境时,记得要居安思危;在逆境时千万不要气馁,以您的性格,可以做到逆境中发现机会,从危机中发现生机。"
},
{
"fortuneSummary": "大吉+才艺",
"luckyStar": "★★★★★★☆",
"signText": "美化丰实,鹤立鸡群,名利俱全,繁荣富贵",
"unsignText": "有德且智德望高,堪为顾问得仁和,名利双收天赋富,威望荣达世间豪。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "成功虽早,慎防空亏,内外不合,障碍重重",
"unsignText": "事业初得成功,不能过度放松警惕,不要将积累的资本挥霍一空。如果团队里人心不能合到一起,今后做起事来也会遇到很多的阻碍。"
},
{
"fortuneSummary": "大吉+财运+官运",
"luckyStar": "★★★★★★☆",
"signText": "天赋吉运,德望兼备,继续努力,前途无限",
"unsignText": "德望高大名誉振,才谋健全财源进,富贵荣华福禄至,前途洋洋得意真。"
},
{
"fortuneSummary": "中吉+财运",
"luckyStar": "★★★★☆☆☆",
"signText": "池中之龙,风云际会,一跃上天,成功可望",
"unsignText": "侥倖所得贵人扶,善捉机会有财富,认真努力向前程,家门隆昌得富荣。与人合伙比之独营好得多,若自己独营商则中途易受挫折。"
},
{
"fortuneSummary": "中吉",
"luckyStar": "★★★★★☆☆",
"signText": "排除万难,有贵人助,把握时机,可得成功",
"unsignText": "突破万难权威高,刚性固执如英豪,须事谨慎守和平,可得大功奏业成。很勤勉求上进,又很有耐力,在技术界或艺能界,是最可能成功之数也。但此数因少得人和,而略感孤独些。"
},
{
"fortuneSummary": "大吉+财运",
"luckyStar": "★★★★★★☆",
"signText": "谦恭做事,必得人和,大事成就,一定兴隆",
"unsignText": "福寿拱照德望高,财子寿全又温和,慈祥好善可恭敬,富贵繁荣得惠泽。财源特佳金钱有餘,离出生之地而往大都市求谋必得更发达。外缘殊胜,容易得人之助力及予人好印象。"
},
{
"fortuneSummary": "大吉",
"luckyStar": "★★★★★★☆",
"signText": "思虑周详,计划力行,不失先机,可望成功",
"unsignText": "兴家立业意志强,智虑周密名望扬,志操坚固信用重,一身才艺建基业。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "得而复失,枉费心机,守成无贪,可保安稳",
"unsignText": "一生艰难辛苦,如波浪之重叠不绝,终身多受挫折而致病弱,刑罚,孤独夭寿之凶兆,若能及早修行善德,脱离凡俗而隐退者,尚可保小康之清福,则化凶为吉也。"
},
{
"fortuneSummary": "大吉+官运",
"luckyStar": "★★★★★★☆",
"signText": "专心经营,善用智慧,霜雪梅花,春来怒放",
"unsignText": "明月光照乐依依,俟如梅花待放时,兴家立业名利全,各自独立有权威。男带此数,需要加强节制力,可免受桃花困扰。女则因事业雄心万丈,多晚婚。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "一胜一衰,浮沉不定,知难而退,自获天佑",
"unsignText": "谨慎保安勿自骄,智谋胆略得显晓,知难而退获天佑,妄进逞强败涂地。"
},
{
"fortuneSummary": "大吉+财运",
"luckyStar": "★★★★★★☆",
"signText": "锦绣前程,须靠自力,多用智谋,能奏大功",
"unsignText": "家门余庆福无疆,子孙繁荣富贵强,白手成家立大业,财源广进智谋全。营商的话还是独营的好,与人合伙久之厌烦不耐。少年读书需用心,舟至桥头直自然。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "波澜起伏,千变万化,凌驾万难,必可成功",
"unsignText": "局势不稳定,变化极多,任何困难都难不到你,最终您将一定会成功,且成就不小,关键是您能否在多变的艰难环境下坚持到最后。"
},
{
"fortuneSummary": "中吉",
"luckyStar": "★★★★☆☆☆",
"signText": "安乐自来,自然吉祥,力行不懈,终必成功",
"unsignText": "志高力微乏实行,妄谋无计事难成,晚年安宁静逸祥,享得天赋增吉相。"
},
{
"fortuneSummary": "大吉",
"luckyStar": "★★★★★★☆",
"signText": "时来运转,事事如意,功成名就,富贵自来",
"unsignText": "利路享通万事成,和畅逍达四海明,家运隆盛招富贵,万商云集得繁荣。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "烦闷懊恼,事事难展,自防灾祸,始免困境",
"unsignText": "受到各种事情的烦扰,不能专心做想做的事情。首要问题是处理好现时的各种烦事,这样可以避免这些小事埋下的祸害,才不导致自已陷入困境。"
},
{
"fortuneSummary": "大吉+财运+才艺",
"luckyStar": "★★★★★★☆",
"signText": "不可意气,善用智慧,如能慎始,必可昌隆",
"unsignText": "家门隆昌精神爽,博得名利星月朗,权威智谋极周全,君是天下富贵翁。具有此数之人,男则勇敢果断,而女则美貌如仙子,有风流不羁不顾时局大体倾向,若修养不够或抑制力不强,往往因桃色事件惹来麻烦。"
},
{
"fortuneSummary": "吉",
"luckyStar": "★★★★☆☆☆",
"signText": "吉运自来,能享盛名,把握机会,必获成功",
"unsignText": "人生路上机会众多,只要把握好一次机会,将会改写您的人生。"
},
{
"fortuneSummary": "大吉+官运",
"luckyStar": "★★★★★★☆",
"signText": "富贵荣华实可当,光明荣达好儿郎,家门隆昌福万千,世代子孙个个贤。",
"unsignText": "因异性而引起之纠纷困扰,失利特多,而且一生常遇逆境之折磨。家庭和顺则万事可成。智能超人贯彻大志,富贵无比,不甘寂寞,叱吒风云之大吉数。切忌牢骚、贪心、欲望太多、永不知足影响前程。"
},
{
"fortuneSummary": "中吉+才艺",
"luckyStar": "★★★★★☆☆",
"signText": "经商做事,顺利昌隆,如能慎始,百事亨通",
"unsignText": "有志竟成事皆通,智谋发展有威望,过刚遭难咸柔德,博得名利大成功。很勤勉求上进,又很有耐力,在技术界或艺能界,是最可能成功之数也。但此数因少得人和,而略感孤独些。"
},
{
"fortuneSummary": "大吉+财运",
"luckyStar": "★★★★★★☆",
"signText": "草木逢春,雨过天晴,渡过难关,即获成功",
"unsignText": "先见机明察佳期,意志坚固好运时,功名利达福禄全,一世荣隆乐绵绵。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "鱼临旱地,难逃恶运,此数大凶,不如更名",
"unsignText": "现时处境就如鱼在旱地上一样,面临大的恶运,是大凶之兆,此处的“不如更名”从现代角度来看,并非全指改名,而更多是指要改变现在的做人处事方式,才能摆脱大凶的来临。"
},
{
"fortuneSummary": "中吉+才艺",
"luckyStar": "★★★★☆☆☆",
"signText": "逢凶化吉,吉人天相,风条雨顺,生意兴隆",
"unsignText": "权威显达得众望,忠实热诚运极旺,大德奏功无难事,终得富荣乐千锺。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "事业不专,十九不成,专心进取,可望成功",
"unsignText": "对事业不专注者,很难有所成就,有了进取心,对事业专心致志才有成功的希望!"
},
{
"fortuneSummary": "中吉",
"luckyStar": "★★★★★☆☆",
"signText": "努力发达,贯彻志望,不忘进退,成功可期",
"unsignText": "意志坚刚善恶明,富进取心求和平,忍耐克己如心意,前难后成可安然。很勤勉求上进,又很有耐力,在技术界或艺能界,是最可能成功之数也。但此数因少得人和,而略感孤独些。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★★★☆☆☆☆",
"signText": "吉凶参半,惟赖勇气,贯彻力行,始可成功",
"unsignText": "人生之路吉、凶各半,有好有坏;要想改变这种不利局面,唯有依赖你的勇气和不屈服的执行力,一步步向前,人生才会更光明,更成功。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "利害混集,凶多吉少,得而复失,难以安顺",
"unsignText": "有好也有坏,但恶运占多,得到的东西容易失去,导致生活难以安定。此运告诫:少接触投机类活动,否则容易一无所有。"
},
{
"fortuneSummary": "大吉+官运",
"luckyStar": "★★★★★★☆",
"signText": "旭日升天,名显四方,渐次进展,终成大业",
"unsignText": "旭日东昇势壮富,贯彻大业万事胜,终至荣达功名显,猛虎添翼势声强。具有此数之人,男多勇敢果断,女多貌若天仙,有风流不羁不顾时局大体倾向,若修养不够或抑制力不强,往往因桃色事件惹来麻烦。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "先苦后甘,先甘后苦,如能守成,不致失败",
"unsignText": "不能一生都有好运,但也不全是恶运,好坏总会各占一半,当好运来时,记得积谷防饥。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "有得有失,华而不实,须防劫财,始保平安",
"unsignText": "金钱上有损失,切忌花枝招展,外表的华丽可能为您带来小人的攻击。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "此数大凶,破产之象,宜速改变,以避厄运",
"unsignText": "不祥之兆,财产有可能一夜尽失,应尽快改变现在的处事和投资方式,避免厄运。"
},
{
"fortuneSummary": "凶带吉",
"luckyStar": "★★★☆☆☆☆",
"signText": "名虽可得,利则难获,艺界发展,可望成功",
"unsignText": "可能有名气,却未能用这名气带来财运,可考虑从事娱乐或艺术来业,把名气转化成事业中一部分。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "动摇不安,常陷逆境,不得时运,难得利润",
"unsignText": "坚持是您现时最缺乏的品质,由于没有坚定的目标,会使您陷入相当困苦的境地。而当获得成功时,却发现时不与我,外部环境已使得竞争激烈导致利润下降。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "灾难不绝,难望成功,此数大凶,不如更名",
"unsignText": "人生路上遇到相当多困难,特别在追求事业的路上,什么事情很难成功。此处的“不如更名”从现代角度来看,并非全指改名,而更多是指要改变现在的做人处事方式,方能扭转现在的运数。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "惨淡经营,难免贫困,此数不吉,最好改名",
"unsignText": "事业不济,入不敷出,坚持一个不好的行业,不会带来事业的腾飞,最好适时转行。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "吉中带凶,欲速不达,进不如守,可保安祥",
"unsignText": "在好运中含藏凶兆,不能操之过急,不可冒然急进,前进得太快,容易出现危险,还不如坚守现在的阵地。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "遇吉则吉,遇凶则凶,惟靠谨慎,逢凶化吉",
"unsignText": "遇到好的的人或事自然就会有好的事情发生或是有好的事降临,相反的遇到坏人坏事就会有糟糕的事情发生讨厌的人来了,想要不被厄运控制,打破坏人坏事的困扰,就只有小心谨慎,有了这种心思方可逢凶化吉,就是遇到坏的也可以变成好的。"
},
{
"fortuneSummary": "凶带吉",
"luckyStar": "★★☆☆☆☆☆",
"signText": "一成一败,一盛一衰,惟靠谨慎,可守成功",
"unsignText": "成 败, 盛 衰这都是相对的,有成功就会有失败,有强盛就会有衰落这都只是时间问题,只有坚定的信念对能获得一定的成功但并不能 够永久。"
},
{
"fortuneSummary": "大吉+官运+财运+才艺",
"luckyStar": "★★★★★★★",
"signText": "如龙得云,青云直上,智谋奋进,才略奏功",
"unsignText": "欲望难足希望高,计谋成功财力豪,猜疑嫉妒性自改,如龙乘云势运开。智能超人贯彻大志,富贵无比,不甘寂寞,叱吒风云之大吉数,但容易发生牢骚及贪心、欲望太多而永不知足,为其缺点。切忌沉迷投机,可免贻误前程。"
},
{
"fortuneSummary": "中吉",
"luckyStar": "★★★★☆☆☆",
"signText": "中吉之数,进退保守,生意安稳,成就可期",
"unsignText": "温和平安艺才高,努力前途福运来,文笔奇绝仁德高,务实稳健掌门人。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "黑夜漫长,进退维谷,内外不合,信用缺乏",
"unsignText": "成功之路相当漫长,经验遇到二难选择,在处理问题上,请注意个人信用,否则容易导致内部矛盾和外部人员的质疑。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "坎坷前途,苦难折磨,非有毅力,难望成功",
"unsignText": "为人独断独行,事事自行作主解决,鲜有求助他人。而这份独立个性,正正就是吸引异性的特质。但其实心底里,却是渴望有人可让他/ 她依赖。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "见异思迁,十九不成,徒劳无功,不如更名",
"unsignText": "见异思迁,使自已做的事情无一成功,开始全情投入,到后面却不能坚持,事情总是在这种情况下失败。要改变心态和做事方式,看准方向就坚持到底,方可成功。"
},
{
"fortuneSummary": "中吉",
"luckyStar": "★★★★★☆☆",
"signText": "专心经营,和气致祥,排除万难,必获成功",
"unsignText": "刚毅果断除万难,独立权威志气安,内外和好兼柔性,温和养德耀吉星。很勤勉求上进,又很有耐力,在技术界或艺能界,是最可能成功之数也。但此数因少得人和,而略感孤独些。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "波澜重迭,常陷穷困,动不如静,有才无命",
"unsignText": "越是对命运的抗争,越是使自已陷入困境,常常想靠自已改变命运,却一次次使自已的生活走入穷困,还不如听天由命,安于本份。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "坎坷不平,艰难重重,若无耐心,难望有成",
"unsignText": "人生过程中,您会遇到非常多的困难,有一坡未平一坡又起之势,在面对这些坎坷时,只要有耐心和毅力,最终都会获得成功的,否则容易一事无成。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "雨夜之花,外祥内苦,忍耐自重,转凶为吉",
"unsignText": "下雨对于花来说,是件好事,但是雨夜,像征着孤独、恐惧、所以,看似吉祥的一片,实是内心承受着煎熬。如果坚强的忍耐过雨夜的敲打,熬过寂寞与恐惧,待明晨又是个艳阳天。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "黑暗无光,心迷意乱,出尔反尔,难定方针",
"unsignText": "黑暗无光之凶运数。不仅事事不能如意,加以心迷意乱,难决定方针,出尔反尔,徒蒙损失,虽获成就。如能就初衷贯彻,或有小康之望。"
},
{
"fortuneSummary": "大吉",
"luckyStar": "★★★★★☆☆",
"signText": "万物化育,繁荣之象,专心一意,始能成功",
"unsignText": "富贵荣达得显甯,子孙繁茂福绵绵,一身平安富益寿,福禄双全享千锺。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "外观隆昌,内隐祸患,克服难关,开出泰运",
"unsignText": "外人看来很风光,而自已内部隐藏的危机,只要解决内部的危机,人生将会过得风风火火。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "吉凶参半,得失相伴,投机取巧,如赛一样",
"unsignText": "没有做太多对他人有价值的事情,导到一生来所做的事有如博彩,投机取巧,来得快也去得快,没有多少剩余,命运也在输赢之间转变。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "乌云遮月,暗淡无光,空费心力,徒劳无功",
"unsignText": "有特强的第六灵感,性格率直无机心,深得朋辈爱戴。感情路上多采多姿。做事喜好凭个人直觉及预感做决定。"
},
{
"fortuneSummary": "中吉+官运",
"luckyStar": "★★★★★☆☆",
"signText": "杨柳遇春,绿叶发枝,冲破难关,一举成名",
"unsignText": "新生泰运顺行舟,排除万难总无忧,成功繁荣四海明,荣华富贵好前程。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "虽用心计,事难遂愿,贪功好进,必招失败",
"unsignText": "无论在社会中有什么地位都会被认定为最低层的人。你深深体会到社会的不公平一面,为了替贫民谋幸福,你会想尽办法改善社会的状况,尤其是如何改善最低下层平民的生活。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "虽抱奇才,有才无命,独营无力,财利无望",
"unsignText": "你虽然很有才,但是却没这个命(时运;事业上自己单干,是不会有什么好发展的,财利难望意思是说发财致富这个愿望是很难实现的。"
},
{
"fortuneSummary": "大吉",
"luckyStar": "★★★★★★☆",
"signText": "大展鸿图,信用得固,无远弗届,可获成功",
"unsignText": "地开泰万事成,身体康安亦富荣,否泰名誉兼享福,一生无忧乐绵长。顺风满帆而容易有所成就,易取富贵人生。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "根基不固,摇摇欲坠,一盛一衰,劳而无功",
"unsignText": "与人合伙比之独营好得多,若自己独营商则中途易受挫折。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "事与愿违,终难成功,欲速不达,有始有终",
"unsignText": "做事不能三分钟热度,要有始有终。急于求成,将会事与愿违,大事难成。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "忍得苦难,必有后福,是成是败,惟靠坚毅",
"unsignText": "只要有坚毅的决心,肯下功夫肯吃苦,多么难的事也能做成功。成功了,福也是必然相随。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "利不及费,坐食山空,如无智谋,难望成功",
"unsignText": "入不敷出,即使有很好的基础,如果没有智谋或用人不善,难以发扬光大,最终可能败掉一切。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★★☆☆☆☆☆",
"signText": "遇事犹疑,难望成事,大刀阔斧,始可有成",
"unsignText": "做事犹豫、不果断,很难做成功;变得果断勇敢了,才有希望。"
},
{
"fortuneSummary": "大吉+官运",
"luckyStar": "★★★★★★☆",
"signText": "此数大吉,名利双收,渐进向上,大业成就",
"unsignText": "智勇得志意气新,建立声誉事业兴,终到富贵福禄奏,为人领导德望高。顺风满帆而容易有所成就,易取富贵人生。"
},
{
"fortuneSummary": "中吉",
"luckyStar": "★★★★★☆☆",
"signText": "万宝云集,天降幸运,立志奋发,可成大功",
"unsignText": "安稳余庆福禄开,盛大幸福天赐来,内含衰兆应谨慎,注意品行福乐享。名誉良好,信用亦佳,步步高升。"
},
{
"fortuneSummary": "大吉+官运+财运",
"luckyStar": "★★★★★★☆",
"signText": "能获众望,成就大业,名利双收,盟主四方",
"unsignText": "贵人得助天乙扶,为人之上有财富,众望所归事业成,不可贪色保安宁。名誉良好,信用亦佳,步步高升。外缘殊胜,容易得人之助力及予人好印象。"
},
{
"fortuneSummary": "中吉",
"luckyStar": "★★★★☆☆☆",
"signText": "努力经营,时来运转,旷野枯草,春来花开",
"unsignText": "寒雪青松性刚强,一度祸难过灾殃,将此发达利亨通,晚景繁荣福无疆。"
},
{
"fortuneSummary": "大吉+官运+才艺",
"luckyStar": "★★★★★★☆",
"signText": "天赋吉运,能得人望,善用智慧,必获成功",
"unsignText": "智略超群博学多,善处事务亦忍和,功业成就得富荣,艺才相身乐千锺。外缘殊胜,容易得人之助力及予人好印象。具有此数之人,男多勇敢果断,女多貌若天仙,有风流不羁不顾时局大体倾向,若修养不够或抑制力不强,往往因桃色事件惹来麻烦。"
},
{
"fortuneSummary": "大吉",
"luckyStar": "★★★★★☆☆",
"signText": "有贵人助,可成大业,虽遇不幸,浮沉不大",
"unsignText": "开花结子衣食足,大业奏功可庆祝,子孙繁荣多快乐,一家圆满庆有馀。"
},
{
"fortuneSummary": "吉带凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "盛衰参半,外祥内苦,先吉后凶,先凶后吉",
"unsignText": "一生好运与恶运都会让您遇上,当外表风光时,可能您的内心正受到非常大的困苦。前半生可能过得很苦,但后半生会出现转运,生活变得很美好;也有可能是前半生过得很风光,而后半生却很潦倒。"
},
{
"fortuneSummary": "大吉",
"luckyStar": "★★★★★★☆",
"signText": "阴阳和合,生意欣荣,名利双收,后福重重",
"unsignText": "福禄寿长阴阳和,心身健全是英豪,名利双收富荣达,乃是世上福德人。财源特佳金钱有餘,离出生之地而往大都市求谋必得更发达。"
},
{
"fortuneSummary": "凶",
"luckyStar": "☆☆☆☆☆☆☆",
"signText": "虽倾全力,难望成功,此数大凶,最好改名",
"unsignText": "即使全力以赴,却没有取得成功。导致失败的原因是现时的待人处事方式有问题,要改变这个现状,要自我反省,改变一些令人厌恶的恶习,方可取得成功。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "秋草逢霜,怀才不遇,忧愁怨苦,事不如意",
"unsignText": "秋天的枯草已经赶上了冰冷的寒霜,而我胸怀才学但生不逢时,难以施展,人生尽是这些忧愁、埋怨、苦衷,人生之事都不如意。"
},
{
"fortuneSummary": "中吉",
"luckyStar": "★★★★★☆☆",
"signText": "天时地利,再得人格,讲信修睦,即可成功",
"unsignText": "资性英敏有奇能,怪癖不和害前程,修身涵养与仁和,奏功获得大鸿图。需要注重个人私生活,可免因桃色韵事贻误前程。"
},
{
"fortuneSummary": "凶",
"luckyStar": "★☆☆☆☆☆☆",
"signText": "智高志大,历尽艰难,焦心忧劳,进退两难",
"unsignText": "即使有宏图大志并且能力超人,但全靠白手起家,需要突破社会重重规则,劳劳碌碌,最后可能处于进退两难的选择当中,不过,由于个人毅力与才气,只要坚持,最后终必成功。"
}
];
// src/jryspro.tsx
var import_crypto = __toESM(require("crypto"));
var jryspro = class {
static {
__name(this, "jryspro");
}
constructor() {
}
async getJrys(uid, debug) {
const md5 = import_crypto.default.createHash("md5");
const hash = import_crypto.default.createHash("sha256");
let etime = (/* @__PURE__ */ new Date()).setHours(0, 0, 0, 0);
let userId;
if (!isNaN(Number(uid))) {
userId = uid;
} else {
if (uid) {
hash.update(uid + String(etime));
let hashhexDigest = hash.digest("hex");
userId = Number(parseInt(hashhexDigest, 16)) % 1000000001;
} else {
md5.update("Default Jrys" + String(etime));
let hexDigest = md5.digest("hex");
userId = parseInt(hexDigest, 16) % 1000000001;
}
}
var todayJrys = etime / 1e5 * userId % 1000001 * 2333 % jrysJson.length;
if (debug)
return { "jrys": todayJrys, "etime": etime / 1e5 };
else
return jrysJson[todayJrys];
}
};
// src/bililink.tsx
var import_jsx_runtime2 = require("@satorijs/element/jsx-runtime");
var aidGroupMap = /* @__PURE__ */ new Map();
var biliLinkAnalysis = class {
static {
__name(this, "biliLinkAnalysis");
}
ctx;
constructor(context, maxLength) {
this.ctx = context;
this.ctx.on("message", async (session) => {
const VIDEO_REGEX = /(((https?:\/\/)?(www\.|m\.)?bilibili\.com\/(video\/)?)?((av|AV)(\d+)|((BV|bv)1[1-9A-NP-Za-km-z]{9})))/;
const B23_REGEX = /((https?:\/\/)?(b23\.tv|bili2233\.cn)\/(((av|ep|ss)\d+)|BV1[1-9A-NP-Za-km-z]{9}|\S{6,7}))/;
const video_hashead = /(https?:\/\/)?(www\.)?bilibili\.com\/video\//;
const b23_hashead = /(https?:\/\/)?(b23\.tv|bili2233\.cn)/;
const content = session.content.toString();
let match;
let regexs = [/<img.*src=.*\/>/gi, /<audio.*url=.*\/>/gi, /<file.*url=.*\/>/gi, /<image.*url=.*\/>/gi];
if (!this.checkStringAgainstRegexes(session.content, regexs))
while ((match = VIDEO_REGEX.exec(content)) !== null || (match = B23_REGEX.exec(content)) !== null) {
if (!match) {
break;
}
const link = match[0];
const groupID = session.event.channel.id.toString();
const aidSet = aidGroupMap.get(groupID) || /* @__PURE__ */ new Set();
try {
let matchLong = /(((av|ep|ss)\d+)|BV1[1-9A-NP-Za-km-z]{9}|\S{6,7})/;
let data = await this.analysisUrl(link.match(video_hashead) ? link : link.match(b23_hashead) ? link : link.match(matchLong) ? "https://b23.tv/" + link : "https://bilibili.com/video/" + link, this.ctx);
const aid = data.videoData.aid.toString();
if (aidSet.has(aid)) {
session.send("该链接已被解析……");
break;
}
aidSet.add(aid);
aidGroupMap.set(groupID, aidSet);
const title = `${data.videoData.title}(https://bilibili.com/video/av${data.videoData.aid} )`;
const picurl = data.videoData.pic;
const desc = data.videoData.desc ? data.videoData.desc.length > maxLength ? `${data.videoData.desc.slice(0, maxLength - 5)}...more` : data.videoData.desc : "这个作者很懒,没有写简介";
await session.send(/* @__PURE__ */ (0, import_jsx_runtime2.jsxs)(import_jsx_runtime2.Fragment, { children: [
title,
/* @__PURE__ */ (0, import_jsx_runtime2.jsx)("image", { url: picurl }),
desc
] }));
break;
} catch (err) {
session.send("视频解析发生错误……");
break;
}
}
});
}
async analysisUrl(url, ctx) {
const videoDataRegex = /<script>window\.__INITIAL_STATE__=(.*);\(function\(\)\{var s;\(s=document.currentScript\|\|document.scripts\[document.scripts.length-1\]\)\.parentNode\.removeChild\(s\);\}\(\)\);<\/script>/gi;
return new Promise(async (resolve2, reject) => {
try {
let res = await ctx.http.axios(url);
let videoJson = JSON.parse(res.data.toString().match(videoDataRegex)[0].replace("<script>window.__INITIAL_STATE__=", "").replace(";(function(){var s;(s=document.currentScript||document.scripts[document.scripts.length-1]).parentNode.removeChild(s);}());</script>", ""));
resolve2(videoJson);
return videoJson;
} catch (error) {
reject(error);
throw error;
}
});
}
checkStringAgainstRegexes(str, regexArray) {
for (let regex of regexArray) {
if (regex.test(str)) {
return true;
}
}
return false;
}
};
// src/interaction.tsx
var interaction_exports = {};
__export(interaction_exports, {
Config: () => Config,
apply: () => apply,
name: () => name
});
var import_koishi2 = require("koishi");
var import_jsx_runtime3 = require("@satorijs/element/jsx-runtime");
var name = "bellabot-interaction";
var imgSourceApi = "https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/json/result_";
var resourceUrl = "https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/img/bella/";
var mediaUrl = "https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/img/bella//mp3/";
var Config = import_koishi2.Schema.object({
"bellabot-interaction": import_koishi2.Schema.boolean().default(true)
});
function apply(ctx, config) {
if (config["bellabot-interaction"]) {
var audios = ["%E8%80%81%E5%A9%86%E8%80%81%E5%A9%86%E8%80%81%E5%A9%86.mp3", "%E8%80%81%E5%85%AC%E8%80%81%E5%85%AC%E8%80%81%E5%85%AC.mp3", "%E7%94%B5%E4%BB%96%E7%89%9B%E5%AD%90%EF%BC%81.mp3"];
var images = ["{766E8262-D758-4c73-8B3D-7642AC7CCAD8}.png", "{766E8262-D758-4c73-8B3D-7642AC7CCAD8}.png", "2892472967c9e1ae44127ae7c6adc53c.jpg", "02dfd6f4be79aabb050e8762ba085186.jpg", "0d67b7cc429ef74c2300459a0fef18b6.png", "-2a7d27ee401a0027.jpg", "-2e240708f9260f08.jpg", "-5f067349ef15d73a.jpg", "-6da24123689ca9b7.jpg", "-33f06a0374b702.jpg", "-75c9290aae88b9f7.jpg", "-337681a405cbe9f4.jpg"];
ctx.command("一图 <type>", "涩图发送器!!").alias("img").usage("img <type> type=0,1,2 || 横屏,竖屏,其他").action(async (_, type) => {
const imgType = ["acc", "ver", "other", "横屏", "竖屏", "其他"];
let urlPath = imgType[Number("awa") % 3] != void 0 ? imgType[Number("awa") % 3] : imgType.indexOf(type) != -1 ? imgType[imgType.indexOf(type) % 3] : void 0;
try {
urlPath = urlPath ? urlPath : imgType[import_koishi2.Random.int(0, 2)];
console.log(imgSourceApi + urlPath);
const resData = await ctx.http.get(imgSourceApi + urlPath + ".json");
const imgUrl = import_koishi2.Random.pick(resData);
let orgUrl = imgUrl.illust.meta_pages;
return /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
"Title: ",
imgUrl.illust.title,
"\n PID: ",
imgUrl.illust.id,
"\n 画师: ",
imgUrl.illust.user.name,
"(",
imgUrl.illust.user.id,
")",
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: (orgUrl[0] ? import_koishi2.Random.pick(orgUrl).image_urls.medium : imgUrl.illust.image_urls.medium).replace("i.pximg.net", "i.pixiv.re") }),
"原图Url: ",
(orgUrl[0] ? import_koishi2.Random.pick(orgUrl).image_urls.original : imgUrl.illust.meta_single_page.original_image_url).replace("i.pximg.net", "i.pixiv.re")
] });
} catch (err) {
console.error(err);
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: "无法连接至jsdelivr...." });
}
});
ctx.command("一言", "随机一言").action(async () => {
const textAll = await ctx.http.get("https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/asign.txt");
const textArr = textAll.toString().split("\n");
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: import_koishi2.Random.pick(textArr) });
});
ctx.command("猫猫", "随机一只猫猫或者不是猫猫").action(async () => {
const textAll = await ctx.http.get("https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/img/neko/filedata.json");
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: "https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/img/neko/" + import_koishi2.Random.pick(textAll.data.filenames) });
});
ctx.command("贝拉", "召唤贝拉").action(async () => {
var txtarr = ["怎么了嘛", "应召而来", "叫贝拉什么事啦", "嗯嗯,好,知道了", "啊!?", "你干嘛~哎哟~", "贝拉不在", "麻麻生的", "好啦好啦,不要再叫啦"];
var imgarr = [
"-1fad13026497291d.jpg",
"-4d1f6de7eb64ec06.jpg",
"-5c0b7575e1db2ae5.jpg",
"-6da24123689ca9b7.jpg",
"-7826353a22e1ca44.jpg",
"7c06323573c03d0b.jpg",
"-4aba7388ceba67c3.jpg",
"-5a045587fc2adaf2.jpg",
"QQ%E5%9B%BE%E7%89%8720230414130134.jpg",
"QQ%E5%9B%BE%E7%89%8720230414130154.jpg",
"QQ%E5%9B%BE%E7%89%8720230414130228.jpg",
"QQ%E5%9B%BE%E7%89%8720210920225332.jpg"
];
var rdmarr = [/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
"在下贝拉,阁下吃了嘛,没吃吃我一拳!!",
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + "1672677378122(1).jpg" })
] }), /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + "34a4284443a9822653b1bfe4cf82b9014b90eb60.jpg" }), /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
"你把我召唤出来了, 要v我50才能回去!",
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + "1672677367060.png" })
] }), /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
"嗨~是想我了么w",
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + "36500a1b36b5eaf0edca53f3078088cba372e565.jpg" })
] }), /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
"是有什么事嘛",
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + "4e76128258b9f4cad44531b2ee2cffc5fadff6b0.jpg" })
] }), /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
"美好的一天,要从美妙的邂逅开始~",
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + "4f37cc50a217fa04.jpg" })
] })];
return /* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: import_koishi2.Random.bool(0.5) ? import_koishi2.Random.pick(rdmarr) : /* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
import_koishi2.Random.pick(txtarr),
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + import_koishi2.Random.pick(imgarr) })
] }) });
});
ctx.on("message", async (session) => {
if (session.content.includes("老婆")) {
session.send(import_koishi2.Random.bool(0.5) ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("audio", { url: mediaUrl + import_koishi2.Random.pick(audios2) }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + import_koishi2.Random.pick(images2) }));
}
if (session.content.match(/(色色|瑟瑟|涩涩)/g)) {
var txtarr1 = ["眼泪滴,不掉;涩涩滴,不要!", "涩涩!", "涩涩打咩~", "打咩嘚嘶,牡蛎嘚嘶!", "不可以涩涩!"];
var rslt1 = ["-1b7dbb6fe80d42e.gif", "-5a045587fc2adaf2.jpg", "-5ba09fe53cbda336.jpg", "-5cfb038737fd80ce.jpg", "-7c898f9ca53577ae.jpg", "-23bf3edcef075ffa.jpg", "-35d44ad8bb0800e.jpg", "-41001f90a7ae7835.jpg", "5f608987b023f5cc.jpg", "62137efd6809115c6b85bb697cee49b3.gif"];
session.send(/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
import_koishi2.Random.pick(txtarr1),
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + import_koishi2.Random.pick(rslt1) })
] }));
}
if (session.content.includes("晚安")) {
var txtarr = ["晚安哦", "一起睡觉觉~", "快睡觉觉啦~", "晚安~", "晚安安~"];
var rslt = ["-2550caef3f27792f.jpg", "-5148d3074c517a8d.jpg", "2e28fdeb0fc2796a.jpg", "-cc39ae6ac099f09.jpg", "6dea8c551aad32a4.jpg", "632696ab894d5e61.gif", "1672677355066.png"];
session.send(/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: [
import_koishi2.Random.pick(txtarr),
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + import_koishi2.Random.pick(rslt) })
] }));
}
if (session.content.includes("老婆")) {
var audios2 = ["%E8%80%81%E5%A9%86%E8%80%81%E5%A9%86%E8%80%81%E5%A9%86.mp3", "%E8%80%81%E5%85%AC%E8%80%81%E5%85%AC%E8%80%81%E5%85%AC.mp3", "%E7%94%B5%E4%BB%96%E7%89%9B%E5%AD%90%EF%BC%81.mp3"];
var images2 = ["{766E8262-D758-4c73-8B3D-7642AC7CCAD8}.png", "{766E8262-D758-4c73-8B3D-7642AC7CCAD8}.png", "2892472967c9e1ae44127ae7c6adc53c.jpg", "02dfd6f4be79aabb050e8762ba085186.jpg", "0d67b7cc429ef74c2300459a0fef18b6.png", "-2a7d27ee401a0027.jpg", "-2e240708f9260f08.jpg", "-5f067349ef15d73a.jpg", "-6da24123689ca9b7.jpg", "-33f06a0374b702.jpg", "-75c9290aae88b9f7.jpg", "-337681a405cbe9f4.jpg"];
return import_koishi2.Random.bool(0.5) ? /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("audio", { url: mediaUrl + import_koishi2.Random.pick(audios2) }) : /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("image", { url: resourceUrl + import_koishi2.Random.pick(images2) });
}
if (session.content.includes("受不了")) {
session.sendQueued("受不了那就攻起来", 800);
session.sendQueued("哪有压迫,哪就有反抗ᕙ(`▿´)ᕗ", 300);
}
if (session.content.includes("娘子")) {
session.send("啊哈~");
}
if (session.content.includes("贝拉唱歌")) {
session.send(/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("random", { children: [
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("audio", { url: "https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/img/bella/mp3/%E3%80%8A%E7%88%B1%E6%B2%B3%E3%80%8B.mp3" }) }),
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("audio", { url: "https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/img/bella/mp3/%E5%BD%93%E5%BD%93%E5%BD%93%E5%BD%93%E5%BD%93%E5%BD%93%E5%BD%93~.mp3" }) }),
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("audio", { url: "https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/img/bella/mp3/DJ%EF%BC%8C%E6%8D%A2%E6%AD%8C.mp3" }) }),
/* @__PURE__ */ (0, import_jsx_runtime3.jsx)(import_jsx_runtime3.Fragment, { children: /* @__PURE__ */ (0, import_jsx_runtime3.jsx)("audio", { url: "https://cdn.jsdelivr.net/gh/Twiyin0/cdnsource/img/bella/mp3/mnk%E9%A6%96%E6%92%AD%E7%94%9F%E6%97%A5%E6%AD%8C.mp3" }) })
] }));
}
if (session.content.match(/^(早|早上好)$/gi)) {
session.send(/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)("random", { children: [
/* @__PURE__ */ (0, import_jsx_runtime3.jsxs)(import_jsx_runtime3.Fragment, { children: