UNPKG

koishi-plugin-jrys-prpr

Version:

[<ruby>**jrys-prpr**<rp>(</rp><rt>点我查看预览图</rt><rp>)</rp></ruby>](https://i0.hdslb.com/bfs/article/ae33f1b2e9dbc3fe89363a40fbf040703493298333289018.png)😽QQ官方json按钮支持,20个群即可发按钮!支持 monetary!很好看的字体! 支持自动清理记录内容。

1,141 lines (1,135 loc) 105 kB
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 name2 in all) __defProp(target, name2, { get: all[name2], 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.ts var src_exports = {}; __export(src_exports, { Config: () => Config, apply: () => apply, inject: () => inject, name: () => name, usage: () => usage }); module.exports = __toCommonJS(src_exports); var import_koishi = require("koishi"); // data/jrys.json var jrys_default = { "84": [ { fortuneSummary: "大吉", luckyStar: "★★★★★★☆", signText: "草木逢春,枯叶沾露,稳健着实,必得人望", unsignText: "挽回家运矣春光,顺调发展财辉煌,温和笃实阴阳合,稳健顺调得人望。顺风满帆而容易有所成就,易取富贵人生。外缘殊胜,容易得人之助力及予人好印象。", luckValue: 84 }, { fortuneSummary: "大吉+才艺", luckyStar: "★★★★★★☆", signText: "美化丰实,鹤立鸡群,名利俱全,繁荣富贵", unsignText: "有德且智德望高,堪为顾问得仁和,名利双收天赋富,威望荣达世间豪。命格吉祥,才艺超群,事业顺遂,定能在各方面取得卓越成就。具备出众的领导能力和广泛的人际关系,能够在艺术和事业领域中获得巨大的成功。", luckValue: 84 }, { fortuneSummary: "大吉+财运+官运", luckyStar: "★★★★★★☆", signText: "天赋吉运,德望兼备,继续努力,前途无限", unsignText: "德望高大名誉振,才谋健全财源进,富贵荣华福禄至,前途洋洋得意真。官运亨通,财源广进,能够在职场中获得重要的职位和丰厚的财富。智慧和决断力会让你在事业上不断攀升,未来充满了光明和希望。", luckValue: 84 }, { fortuneSummary: "大吉+财运", luckyStar: "★★★★★★☆", signText: "谦恭做事,必得人和,大事成就,一定兴隆", unsignText: "福寿拱照德望高,财子寿全又温和,慈祥好善可恭敬,富贵繁荣得惠泽。财源特佳金钱有餘,离出生之地而往大都市求谋必得更发达。外缘殊胜,容易得人之助力及予人好印象。", luckValue: 84 }, { fortuneSummary: "大吉", luckyStar: "★★★★★★☆", signText: "时来运转,事事如意,功成名就,富贵自来", unsignText: "利路享通万事成,和畅逍达四海明,家运隆盛招富贵,万商云集得繁荣。运势大吉,事业顺利,财运亨通,家庭幸福。或许今天将迎来一个充满机遇和好运的时期,任何计划都将顺利进行。人际关系和谐,得到贵人相助,成功在望。", luckValue: 84 }, { fortuneSummary: "大吉+财运+才艺", luckyStar: "★★★★★★☆", signText: "不可意气,善用智慧,如能慎始,必可昌隆", unsignText: "家门隆昌精神爽,博得名利星月朗,权威智谋极周全,君是天下富贵翁。具有此数之人,男则勇敢果断,而女则美貌如仙子,有风流不羁不顾时局大体倾向,若修养不够或抑制力不强,往往因桃色事件惹来麻烦。", luckValue: 84 }, { fortuneSummary: "大吉+官运", luckyStar: "★★★★★★☆", signText: "富贵荣华实可当,光明荣达好儿郎,家门隆昌福万千,世代子孙个个贤。", unsignText: "因异性而引起之纠纷困扰,失利特多,而且一生常遇逆境之折磨。家庭和顺则万事可成。智能超人贯彻大志,富贵无比,不甘寂寞,叱吒风云之大吉数。切忌牢骚、贪心、欲望太多、永不知足影响前程。", luckValue: 84 }, { fortuneSummary: "大吉+官运", luckyStar: "★★★★★★☆", signText: "此数大吉,名利双收,渐进向上,大业成就", unsignText: "智勇得志意气新,建立声誉事业兴,终到富贵福禄奏,为人领导德望高。顺风满帆而容易有所成就,易取富贵人生。官运亨通,职位步步高升,受到上司和同僚的高度评价。事业稳步发展,终能成就大业,获得社会的尊重与认可。", luckValue: 84 }, { fortuneSummary: "大吉+官运+财运", luckyStar: "★★★★★★☆", signText: "能获众望,成就大业,名利双收,盟主四方", unsignText: "贵人得助天乙扶,为人之上有财富,众望所归事业成,不可贪色保安宁。名誉良好,信用亦佳,步步高升。外缘殊胜,容易得人之助力及予人好印象。或许在官场和财运上能双双得意,不仅职位步步高升,还将财源广进。事业稳固,人脉广泛,受到众人的推崇和支持,成就辉煌,前途无量。", luckValue: 84 }, { fortuneSummary: "大吉+官运+才艺", luckyStar: "★★★★★★☆", signText: "天赋吉运,能得人望,善用智慧,必获成功", unsignText: "智略超群博学多,善处事务亦忍和,功业成就得富荣,艺才相身乐千锺。外缘殊胜,容易得人之助力及予人好印象。具有此数之人,男多勇敢果断,女多貌若天仙,有风流不羁不顾时局大体倾向,若修养不够或抑制力不强,往往因桃色事件惹来麻烦。", luckValue: 84 } ], "0": [ { fortuneSummary: "凶", luckyStar: "☆☆☆☆☆☆☆", signText: "薄弱无力,孤立无摇,外祥内苦,谋事难成", unsignText: "人生路上诸事不顺,自身能力之限制,经常迫于无耐。由于性格或人际关系上的问题,难遇贵人。经常一人处理所有事情,即使有天大的能力,总会遇到不能解决的问题,而这些问题会导致事业的失败。", luckValue: 0 }, { fortuneSummary: "凶", luckyStar: "☆☆☆☆☆☆☆", signText: "鱼临旱地,难逃恶运,此数大凶,不如更名", unsignText: "现时处境就如鱼在旱地上一样,面临大的恶运,是大凶之兆,此处的“不如更名”从现代角度来看,并非全指改名,而更多是指要改变现在的做人处事方式,才能摆脱大凶的来临。", luckValue: 0 }, { fortuneSummary: "凶", luckyStar: "☆☆☆☆☆☆☆", signText: "此数大凶,破产之象,宜速改变,以避厄运", unsignText: "不祥之兆,财产有可能一夜尽失,应尽快改变现在的处事和投资方式,避免厄运。要特别注意人际关系中的矛盾和冲突,保持冷静和理智,以减少损失和避免更大的麻烦。当前时期不宜冒险,应以保守为主,防范于未然。", luckValue: 0 }, { fortuneSummary: "凶", luckyStar: "☆☆☆☆☆☆☆", signText: "动摇不安,常陷逆境,不得时运,难得利润", unsignText: "坚持是您现时最缺乏的品质,由于没有坚定的目标,会使您陷入相当困苦的境地。而当获得成功时,却发现时不与我,外部环境已使得竞争激烈导致利润下降。", luckValue: 0 }, { fortuneSummary: "吉带凶", luckyStar: "☆☆☆☆☆☆☆", signText: "吉中带凶,欲速不达,进不如守,可保安祥", unsignText: "在好运中含藏凶兆,不能操之过急,不可冒然急进,前进得太快,容易出现危险,还不如坚守现在的阵地。虽然有一些好的机会,但也伴随着风险,需谨慎行事。宜稳步前进,不急不躁,方能确保安全和稳定,减少意外的发生。", luckValue: 0 }, { fortuneSummary: "凶", luckyStar: "☆☆☆☆☆☆☆", signText: "虽倾全力,难望成功,此数大凶,最好改名", unsignText: "即使全力以赴,却没有取得成功。导致失败的原因是现时的待人处事方式有问题,要改变这个现状,要自我反省,改变一些令人厌恶的恶习,方可取得成功。宜放下执念,重新审视自己的道路,以免一错再错,陷入困境。", luckValue: 0 } ], "70": [ { fortuneSummary: "中吉", luckyStar: "★★★★★☆☆", signText: "排除万难,有贵人助,把握时机,可得成功", unsignText: "突破万难权威高,刚性固执如英豪,须事谨慎守和平,可得大功奏业成。很勤勉求上进,又很有耐力,在技术界或艺能界,是最可能成功之数也。但此数因少得人和,而略感孤独些。", luckValue: 70 }, { fortuneSummary: "中吉", luckyStar: "★★★★★☆☆", signText: "万宝云集,天降幸运,立志奋发,可成大功", unsignText: "安稳余庆福禄开,盛大幸福天赐来,内含衰兆应谨慎,注意品行福乐享。名誉良好,信用亦佳,步步高升。要注意不要过于得意忘形,保持谦虚和谨慎,才能继续享受好运。", luckValue: 70 }, { fortuneSummary: "中吉+官运", luckyStar: "★★★★★☆☆", signText: "杨柳遇春,绿叶发枝,冲破难关,一举成名", unsignText: "新生泰运顺行舟,排除万难总无忧,成功繁荣四海明,荣华富贵好前程。只要坚定信念,不怕困难,就能在官场上取得显著成就,并迎来事业的高峰。", luckValue: 70 }, { fortuneSummary: "中吉+才艺", luckyStar: "★★★★★☆☆", signText: "经商做事,顺利昌隆,如能慎始,百事亨通", unsignText: "有志竟成事皆通,智谋发展有威望,过刚遭难咸柔德,博得名利大成功。很勤勉求上进,又很有耐力,在技术界或艺能界,是最可能成功之数也。但此数因少得人和,而略感孤独些。", luckValue: 70 }, { fortuneSummary: "中吉", luckyStar: "★★★★★☆☆", signText: "天时地利,再得人格,讲信修睦,即可成功", unsignText: "资性英敏有奇能,怪癖不和害前程,修身涵养与仁和,奏功获得大鸿图。需要注重个人私生活,可免因桃色韵事贻误前程。尤其要在处理人际关系时多加小心,避免因冲动或不谨慎的言行影响到你的整体运势。在职业发展中保持谦逊和稳重,才能更好地把握机遇,取得成功。", luckValue: 70 }, { fortuneSummary: "大吉", luckyStar: "★★★★★☆☆", signText: "万物化育,繁荣之象,专心一意,始能成功", unsignText: "富贵荣达得显甯,子孙繁茂福绵绵,一身平安富益寿,福禄双全享千锺。努力将会得到丰厚的回报,但需要注意家庭和睦,家庭的支持是你成功的基石。保持身体健康,才有更多的精力去追求事业上的成就。同时要心怀感恩,懂得分享,才能更长久地维持好运。", luckValue: 70 }, { fortuneSummary: "大吉", luckyStar: "★★★★★☆☆", signText: "得天时地利,人和相助,事业兴旺,财源广进", unsignText: "家运昌隆,子孙贤能,事业发达,财源滚滚。贵人扶助,凡事顺遂,名利双收,前途光明。在各方面得到贵人的帮助,使你的事业顺风顺水。但也要注意保持谦虚谨慎,不骄不躁。家庭和睦是你事业成功的重要保障,珍惜眼前的幸福,并与家人分享你的成功。", luckValue: 70 }, { fortuneSummary: "中吉+财富", luckyStar: "★★★★★☆☆", signText: "机遇良好,财源茂盛,努力奋发,必有所成", unsignText: "家道昌盛,事业有成,四方之财,滚滚而来。若能谨慎行事,财源不绝,富贵荣华,皆在其中。财富的积累需要脚踏实地,避免贪图短期利益而忽视长远发展。与人合作时保持诚信,才能赢得更多的机会和资源。理财方面也要注意节制和规划,不要轻易冒险。", luckValue: 70 }, { fortuneSummary: "大吉", luckyStar: "★★★★★☆☆", signText: "风调雨顺,万事顺遂,家庭美满,事业腾达", unsignText: "家和万事兴,事业稳步发展,财源广进,子孙贤能。注重内外和谐,幸福安康,福寿双全。生活将充满和谐与幸福,家庭是你最大的支持者。事业上会有稳定的发展机会,财务状况也会逐渐好转。保持积极向上的心态和良好的人际关系,将会让你的人生更加美满。", luckValue: 70 }, { fortuneSummary: "中吉+事业", luckyStar: "★★★★★☆☆", signText: "事业有成,名利双收,心想事成,幸福美满", unsignText: "家庭和睦,事业顺利,财源广进,子孙贤能。内外兼修,福禄寿全,幸福安康,万事如意。事业的成功离不开家庭的支持,注意在追求事业的同时也要兼顾家庭。良好的个人修养和健康的身体是你持续成功的关键,保持平衡的生活方式,将会让你的人生更加充实和美满。", luckValue: 70 } ], "28": [ { fortuneSummary: "吉带凶", luckyStar: "★★☆☆☆☆☆", signText: "一胜一衰,浮沉不定,知难而退,自获天佑", unsignText: "谨慎保安勿自骄,智谋胆略得显晓,知难而退获天佑,妄进逞强败涂地。你需要在逆境中保持冷静和清醒,避免因为骄傲和冲动而导致失败。知难而退,不是懦弱,而是智慧的体现。只有在适当的时候退让,才能避免更大的损失,并在未来获得更好的发展机会。务必重视安全,不可掉以轻心,防范潜在的风险和威胁。", luckValue: 28 }, { fortuneSummary: "凶", luckyStar: "★★☆☆☆☆☆", signText: "波澜起伏,千变万化,凌驾万难,必可成功", unsignText: "局势不稳定,变化极多,任何困难都难不到你,最终您将一定会成功,且成就不小,关键是能否在多变的艰难环境下坚持到最后。你需要具备强大的毅力和决心,在面对各种困难和挑战时不轻言放弃。虽然前路坎坷,但只要坚定信念,保持耐心和勇气,你终将克服一切障碍,取得辉煌的成就。切记,在任何情况下都不要丧失希望和信心。", luckValue: 28 }, { fortuneSummary: "吉带凶", luckyStar: "★★☆☆☆☆☆", signText: "先苦后甘,先甘后苦,如能守成,不致失败", unsignText: "不能一生都有好运,但也不全是恶运,好坏总会各占一半,当好运来时,记得积谷防饥。你的人生会经历许多起伏,不要被暂时的顺利冲昏头脑,也不要因为一时的挫折而灰心丧气。把握好运时刻,为未来做好准备,在逆境中积蓄力量和资源。保持警惕和冷静,方能在各种变化中稳步前行,最终实现稳定和长久的成功。", luckValue: 28 }, { fortuneSummary: "吉带凶", luckyStar: "★★☆☆☆☆☆", signText: "有得有失,华而不实,须防劫财,始保平安", unsignText: "金钱上有损失,切忌花枝招展,外表的华丽可能为您带来小人的攻击。需要格外小心自己的财务状况,避免不必要的开支和投资,警惕可能的财务陷阱。同时,不要过于注重外表的浮华,保持低调和内敛,才能避免招致不必要的麻烦和敌意。在处理人际关系时,也要谨慎行事,以防小人暗算。只有这样,你才能确保自己的平安和财务的稳定。", luckValue: 28 }, { fortuneSummary: "凶", luckyStar: "★★☆☆☆☆☆", signText: "遇吉则吉,遇凶则凶,惟靠谨慎,逢凶化吉", unsignText: "遇到好的的人或事自然就会有好的事情发生或是有好的事降临,相反的遇到坏人坏事就会有糟糕的事情发生讨厌的人来了,想要不被厄运控制,打破坏人坏事的困扰,就只有小心谨慎,有了这种心思方可逢凶化吉,就是遇到坏的也可以变成好的。", luckValue: 28 }, { fortuneSummary: "凶带吉", luckyStar: "★★☆☆☆☆☆", signText: "一成一败,一盛一衰,惟靠谨慎,可守成功", unsignText: "成 败, 盛 衰这都是相对的,有成功就会有失败,有强盛就会有衰落这都只是时间问题,只有坚定的信念对能获得一定的成功但并不能永久。", luckValue: 28 }, { fortuneSummary: "吉带凶", luckyStar: "★★☆☆☆☆☆", signText: "雨夜之花,外祥内苦,忍耐自重,转凶为吉", unsignText: "下雨对于花来说,是件好事,但是雨夜,像征着孤独、恐惧、所以,看似吉祥的一片,实是内心承受着煎熬。如果坚强的忍耐过雨夜的敲打,熬过寂寞与恐惧,待明晨又是个艳阳天。", luckValue: 28 }, { fortuneSummary: "吉带凶", luckyStar: "★★☆☆☆☆☆", signText: "外观隆昌,内隐祸患,克服难关,开出泰运", unsignText: "外人看来很风光,而自已内部隐藏的危机,只要解决内部的危机,人生将会过得风风火火。关键是要找到问题的根源,然后对症下药,才能真正消除隐患,迎来成功。", luckValue: 28 }, { fortuneSummary: "凶", luckyStar: "★★☆☆☆☆☆", signText: "根基不固,摇摇欲坠,一盛一衰,劳而无功", unsignText: "与人合伙比之独营好得多,若自己独营商则中途易受挫折。合作可以分担风险和责任,更有可能成功,但要找到可靠的合作伙伴。", luckValue: 28 }, { fortuneSummary: "凶", luckyStar: "★★☆☆☆☆☆", signText: "遇事犹疑,难望成事,大刀阔斧,始可有成", unsignText: "做事犹豫、不果断,很难做成功;变得果断勇敢了,才有希望。遇到问题时不要退缩,要坚定信心,勇敢面对,才能取得成功。", luckValue: 28 } ], "56": [ { fortuneSummary: "中吉+财运", luckyStar: "★★★★☆☆☆", signText: "池中之龙,风云际会,一跃上天,成功可望", unsignText: "侥倖所得贵人扶,善捉机会有财富,认真努力向前程,家门隆昌得富荣。与人合伙比之独营好得多,若自己独营商则中途易受挫折。", luckValue: 56 }, { 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: "智慧过人谋略得当,善于计划事半功倍,坚持不懈成就非凡,前途无量未来光。通过过人的智慧和得当的谋略,将会在事业和未来的路上取得非凡的成就和光明的前途。" } ], "42": [ { fortuneSummary: "凶带吉", luckyStar: "★★★☆☆☆☆", signText: "半凶半吉,浮沉多端,始凶终吉,能保成功", unsignText: "所求之事,是吉凶参半。所要经历的,既有非你所愿、无法承受之痛苦,也有甘之如饴、顺风顺水之运气。无法如预期的稳定,不确定的因素对其本身影响很大。要老老实实接受磨难的考验,之后成功就会不期而遇。", luckValue: 42 }, { fortuneSummary: "吉带凶", luckyStar: "★★★☆☆☆☆", signText: "吉凶参半,惟赖勇气,贯彻力行,始可成功", unsignText: "人生之路吉、凶各半,有好有坏;要想改变这种不利局面,唯有依赖你的勇气和不屈服的执行力,一步步向前,人生才会更光明,更成功。", luckValue: 42 }, { fortuneSummary: "凶带吉", luckyStar: "★★★☆☆☆☆", signText: "名虽可得,利则难获,艺界发展,可望成功", unsignText: "可能有名气,却未能用这名气带来财运,可考虑从事娱乐或艺术来业,把名气转化成事业中一部分。凭借你的才华和努力,将有机会在这一领域取得成功,获得更多认可和财富。", luckValue: 42 }, { fortuneSummary: "吉带凶", luckyStar: "★★★☆☆☆☆", signText: "喜忧参半,努力拼搏,前途未定", unsignText: "你的运势起伏不定,有时会遇到意外之喜,但也有可能面临挫折。需坚定信心,不畏艰难,方能走向光明的未来。只有通过坚持不懈的努力和奋斗,才能最终实现自己的目标和梦想。", luckValue: 42 }, { fortuneSummary: "凶带吉", luckyStar: "★★★☆☆☆☆", signText: "逆境重重,智慧为钥,终有转机", unsignText: "目前处境可能不太理想,但凭借你的智慧和耐心,能在逆境中找到出路,逐步迎来好运。相信自己的能力,面对挑战时保持冷静,最终会看到生活中的转机和希望。", luckValue: 42 }, { fortuneSummary: "吉凶混杂", luckyStar: "★★★☆☆☆☆", signText: "吉凶交织,心态平和,稳中求胜", unsignText: "运势起伏较大,需要保持冷静的心态,稳步前行,避免因急躁而犯错,从而实现最终的成功。只有在困境中保持镇定,谨慎处理每一个决定,才能逐渐走向成功的彼岸。", luckValue: 42 }, { fortuneSummary: "吉中带凶", luckyStar: "★★★☆☆☆☆", signText: "风雨兼程,坚守信念,终见彩虹", unsignText: "你的路上既有风雨也有阳光,坚持信念,不懈努力,最终会迎来属于你的彩虹。在困难和挑战面前,不要放弃自己的目标,相信风雨过后总会见到美丽的彩虹。", luckValue: 42 }, { fortuneSummary: "凶中有吉", luckyStar: "★★★☆☆☆☆", signText: "困难重重,巧用智慧,转危为安", unsignText: "面临的挑战很多,但通过智慧和策略,能将危机化为机会,迎来好运。不要被眼前的困难吓倒,只要冷静分析,灵活应对,就能从困境中找到突破口,实现转机。", luckValue: 42 }, { fortuneSummary: "吉凶参半", luckyStar: "★★★☆☆☆☆", signText: "半吉半凶,步步为营,小心驶得万年船", unsignText: "运势有好有坏,行事需谨慎,步步为营,才能确保平安顺利。面对未知的挑战和机遇,保持警惕,不冒险,稳扎稳打,最终能走向成功的道路。", luckValue: 42 }, { fortuneSummary: "吉带忧", luckyStar: "★★★☆☆☆☆", signText: "喜中有忧,心态平稳,善用资源", unsignText: "在好运中隐藏着一些隐忧,保持心态平稳,善于利用手中的资源,才能化险为夷。不要因为眼前的顺利而掉以轻心,谨慎处理每一步,才能避免潜在的风险。", luckValue: 42 }, { fortuneSummary: "凶带喜", luckyStar: "★★★☆☆☆☆", signText: "困境中见曙光,艰难中有希望", unsignText: "虽然面临困境,但也能看到希望的曙光,坚持不懈,会有意想不到的惊喜。只要不放弃,在最黑暗的时刻也能找到前行的方向,最终迎来光明和希望。", luckValue: 42 }, { fortuneSummary: "吉凶各半", luckyStar: "★★★☆☆☆☆", signText: "顺逆交替,谨慎行事,终能如愿", unsignText: "运势有时顺利,有时波折,需谨慎行事,方能最终实现心愿。保持冷静,面对顺境和逆境都要有足够的耐心和智慧,才能在风雨中坚持到最后,迎来胜利。", luckValue: 42 }, { fortuneSummary: "吉中有险", luckyStar: "★★★☆☆☆☆", signText: "福祸相依,沉稳应对,化险为夷", unsignText: "在吉运中隐藏着一些风险,保持沉稳,冷静应对,才能顺利渡过难关。不要被一时的顺利冲昏头脑,时刻保持警惕,做好充分的准备,才能避免潜在的危险。", luckValue: 42 }, { fortuneSummary: "凶中带吉", luckyStar: "★★★☆☆☆☆", signText: "险中有生机,耐心等待,时机将至", unsignText: "虽然处于凶险之中,但只要耐心等待,时机成熟时将迎来转机。不要急于求成,稳扎稳打,在适当的时候采取行动,才能在逆境中找到生机,取得成功。", luckValue: 42 }, { fortuneSummary: "吉凶同现", luckyStar: "★★★☆☆☆☆", signText: "福祸相倚,细心观察,趋吉避凶", unsignText: "运势中既有吉利也有凶险,需细心观察,尽量趋吉避凶,才能安全顺利。保持冷静,善于发现问题并解决问题,才能在复杂的局势中找到自己的方向,走向成功。", luckValue: 42 }, { fortuneSummary: "吉中藏凶", luckyStar: "★★★☆☆☆☆", signText: "吉中有忧,心态平和,稳步前行", unsignText: "在吉运中隐藏着忧患,需保持平和的心态,稳步前行,才能平安顺利。不要因为一时的顺利而掉以轻心,保持警惕,做好准备,才能在吉运中避免不必要的风险。", luckValue: 42 }, { fortuneSummary: "凶中带喜", luckyStar: "★★★☆☆☆☆", signText: "困境中有转机,努力不懈,终有突破", unsignText: "虽然面临困境,但只要努力不懈,终能找到转机,实现突破。面对困难时,不要放弃,坚持自己的信念,终将迎来成功的曙光,突破重重阻碍。", luckValue: 42 }, { fortuneSummary: "吉凶并存", luckyStar: "★★★☆☆☆☆", signText: "福祸交织,冷静应对,终能圆满", unsignText: "运势中有福有祸,需冷静应对,方能最终圆满。在顺境中保持谦逊,在逆境中保持坚韧,冷静处理每一个问题,最终能实现圆满的结局。", luckValue: 42 }, { fortuneSummary: "吉带忧虑", luckyStar: "★★★☆☆☆☆", signText: "福中藏忧,谨慎行事,避免失误", unsignText: "吉运中隐藏着一些忧虑,需谨慎行事,避免因疏忽导致的失误。不要被眼前的顺利冲昏头脑,保持警惕,处理每个细节,才能顺利化解潜在的风险。", luckValue: 42 }, { fortuneSummary: "凶中藏机", luckyStar: "★★★☆☆☆☆", signText: "危中有机,耐心坚持,迎来转折", unsignText: "虽然目前处于凶险中,但危机中也蕴含着机会,只要耐心坚持,终能迎来转折。保持乐观,善于抓住机会,就能在逆境中找到生机,实现目标。", luckValue: 42 }, { fortuneSummary: "凶中藏机", luckyStar: "★★★☆☆☆☆", signText: "危中有机,耐心坚持,迎来转折", unsignText: "虽然目前处于凶险中,但危机中也蕴含着机会,只要耐心坚持,终能迎来转折。面对困境时,保持乐观和耐心,相信自己能够找到解决问题的方法,走向好运。", luckValue: 42 } ], "98": [ { fortuneSummary: "大吉+官运+财运+才艺", luckyStar: "★★★★★★★", signText: "如龙得云,青云直上,智谋奋进,才略奏功", unsignText: "欲望难足希望高,计谋成功财力豪,猜疑嫉妒性自改,如龙乘云势运开。智能超人贯彻大志,富贵无比,不甘寂寞,叱吒风云之大吉数,但容易发生牢骚及贪心、欲望太多而永不知足,为其缺点。切忌沉迷投机,可免贻误前程。", luckValue: 98 }, { fortuneSummary: "大吉+好运+财运+智慧", luckyStar: "★★★★★★★", signText: "天高任鸟飞,得意扬眉,智慧卓绝,财富伴随", unsignText: "人情融洽财运佳,才智兼备福寿长,心胸宽广逢贵人,如虎添翼势飞扬。智力非凡,心胸广阔,成就卓越,名利双收。但要注意心浮气躁,防止骄傲自满,切勿贪婪无厌,以免因贪失义,贻误大好前程。", luckValue: 98 }, { fortuneSummary: "大吉+事业+财运+智慧", luckyStar: "★★★★★★★", signText: "鲲鹏展翅,扶摇直上,才智双全,富贵逼人", unsignText: "志向高远成功近,财运亨通人缘好,心态平和运势旺,如日中天前程似锦。智勇双全,名利双收,但需谨防骄傲自满和急功近利。切勿贪图享乐,保持谦逊可免损失大好机遇。", luckValue: 98 }, { fortuneSummary: "大吉+爱情+财运+健康", luckyStar: "★★★★★★★", signText: "情满人间,财源滚滚,健康如意,幸福圆满", unsignText: "爱情顺利家庭和,财运丰厚健康佳,身心愉悦运势旺,吉祥如意幸福长。感情稳定,财富积累,但需注意情感沟通和财务规划,避免因疏忽导致的困扰和损失。保持健康生活方式,方能长久享受幸福。", luckValue: 98 }, { fortuneSummary: "大吉+学业+财运+人缘", luckyStar: "★★★★★★★", signText: "学有所成,财源广进,人脉广结,前途无量", unsignText: "学业顺利成绩佳,财运亨通人脉广,心态平和智谋高,步步高升未来光明。学业有成,财富增长,但需警惕因骄傲导致的学业懈怠和财务风险。保持谦虚好学的态度,方能持续进步。", luckValue: 98 }, { fortuneSummary: "大吉+家庭+财运+才华", luckyStar: "★★★★★★★", signText: "家庭和睦,财运旺盛,才华横溢,幸福满满", unsignText: "家庭和美幸福多,财运滚滚富贵增,才华尽展运势高,福气满满乐无边。家庭和谐,财富累积,但需注意家庭沟通和财务管理,避免因疏忽带来的问题。保持创造力和勤奋,方能持续幸福。", luckValue: 98 } ], "14": [ { fortuneSummary: "凶", luckyStar: "★☆☆☆☆☆☆", signText: "坎坷不平,艰难重重,若无耐心,难望有成", unsignText: "人生过程中,您会遇到非常多的困难,有一坡未平一坡又起之势,在面对这些坎坷时,只要有耐心和毅力,最终都会获得成功的,否则容易一事无成。", luckValue: 14 }, { fortuneSummary: "凶", luckyStar: "★☆☆☆☆☆☆", signText: "黑暗无光,心迷意乱,出尔反尔,难定方针", unsignText: "黑暗无光之凶运数。不仅事事不能如意,加以心迷意乱,难决定方针,出尔反尔,徒蒙损失,虽获成就。如能就初衷贯彻,或有小康之望。", luckValue: 14 }, { fortuneSummary: "凶", luckyStar: "★☆☆☆☆☆☆", signText: "事与愿违,终难成功,欲速不达,有始有终", unsignText: "做事不能三分钟热度,要有始有终。急于求成,将会事与愿违,大事难成。", luckValue: 14 }, { fortuneSummary: "凶", luckyStar: "★☆☆☆☆☆☆", signText: "忍得苦难,必有后福,是成是败,惟靠坚毅", unsignText: "只要有坚毅的决心,肯下功夫肯吃苦,多么难的事也能做成功。成功了,福也是必然相随。", luckValue: 14 }, { fortuneSummary: "凶", luckyStar: "★☆☆☆☆☆☆", signText: "利不及费,坐食山空,如无智谋,难望成功", unsignText: "入不敷出,即使有很好的基础,如果没有智谋或用人不善,难以发扬光大,最终可能败掉一切。", luckValue: 14 }, { fortuneSummary: "吉带凶", luckyStar: "★☆☆☆☆☆☆", signText: "盛衰参半,外祥内苦,先吉后凶,先凶后吉", unsignText: "一生好运与恶运都会让您遇上,当外表风光时,可能您的内心正受到非常大的困苦。前半生可能过得很苦,但后半生会出现转运,生活变得很美好;也有可能是前半生过得很风光,而后半生却很潦倒。", luckValue: 14 }, { fortuneSummary: "凶", luckyStar: "★☆☆☆☆☆☆", signText: "智高志大,历尽艰难,焦心忧劳,进退两难", unsignText: "即使有宏图大志并且能力超人,但全靠白手起家,需要突破社会重重规则,劳劳碌碌,最后可能处于进退两难的选择当中,不过,由于个人毅力与才气,只要坚持,最后终必成功。", luckValue: 14 } ] }; // src/index.ts var import_node_fs = __toESM(require("node:fs")); var import_node_path = __toESM(require("node:path")); var import_node_crypto = __toESM(require("node:crypto")); var import_node_url = require("node:url"); var name = "jrys-prpr"; var inject = { required: ["i18n", "logger", "http", "puppeteer"], optional: ["canvas", "monetary", "database"] }; var usage = ` <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>运势卡片说明</title> </head> <body> <div> <h1>获取运势卡片 🧧</h1> <p>发送指令 <code>jrysprpr</code> 即可获取一张个性化的运势卡片。</p> <p>您还可以使用 <code>--split</code> 选项来获取图文模式的运势,只需发送 <code>jrysprpr -s</code> 即可。</p> <h3>如果您想获取运势卡的背景图,需要启用<code>原图</code>指令</h3> <h3>可以直接回复一张已发送的运势卡图片并输入指令 <code>获取原图</code>。</h3> <p>或者使用 <code>获取原图 ********</code> 来获取对应标识码的背景图。</p> <p>如果您使用的是QQ官方bot,也可以通过点击markdown运势卡上的“查看原图”按钮来获取。</p> <hr> </div> </body> </html> `; var defaultFortuneProbability = [ { "Fortune": "☆☆☆☆☆☆☆", "luckValue": 0, "Probability": 5 }, { "Fortune": "★☆☆☆☆☆☆", "luckValue": 14, "Probability": 10 }, { "Fortune": "★★☆☆☆☆☆", "luckValue": 28, "Probability": 12 }, { "Fortune": "★★★☆☆☆☆", "luckValue": 42, "Probability": 15 }, { "Fortune": "★★★★☆☆☆", "luckValue": 56, "Probability": 30 }, { "Fortune": "★★★★★☆☆", "luckValue": 70, "Probability": 35 }, { "Fortune": "★★★★★★☆", "luckValue": 84, "Probability": 45 }, { "Fortune": "★★★★★★★", "luckValue": 98, "Probability": 25 } ]; var Config = import_koishi.Schema.intersect([ import_koishi.Schema.object({ command: import_koishi.Schema.string().default("jrysprpr").description("`签到`指令自定义"), command2: import_koishi.Schema.string().default("查看运势背景图").description("`原图`指令自定义"), //authority: Schema.number().default(1).description("指令权限设置"), GetOriginalImageCommand: import_koishi.Schema.boolean().description("开启后启用`原图`指令,可以获取运势背景原图").default(true), autocleanjson: import_koishi.Schema.boolean().description("自动获取原图后,删除对应的json记录信息").default(true), Checkin_HintText: import_koishi.Schema.union([ import_koishi.Schema.const("unset").description("unset").description("不返回提示语"), import_koishi.Schema.string().description("string").description("请在右侧修改提示语").default("正在分析你的运势哦~请稍等~~") ]).description("`签到渲染中`提示语"), recallCheckin_HintText: import_koishi.Schema.boolean().description("jrys结果发送后,自动撤回`Checkin_HintText`提示语").default(true), GetOriginalImage_Command_HintText: import_koishi.Schema.union([ import_koishi.Schema.const("1").description("不返回文字提示"), import_koishi.Schema.const("2").description("返回文字提示,且为图文消息"), import_koishi.Schema.const("3").description("返回文字提示,且为单独发送的文字消息") ]).role("radio").default("2").description("是否返回获取原图的文字提示。开启后,会发送`获取原图,请发送「原图 ******」`这样的文字提示"), FortuneProbabilityAdjustmentTable: import_koishi.Schema.array(import_koishi.Schema.object({ Fortune: import_koishi.Schema.string().description("运势种类"), //.disabled() // disabled时,Probability拉条拉到0 ,会偶现点不下去的情况,反正就是难交互 luckValue: import_koishi.Schema.number().description("种类数值").hidden(), Probability: import_koishi.Schema.number().role("slider").min(0).max(100).step(1).description("抽取权重") })).role("table").description("运势抽取概率调节表`权重均为0时使用默认配置项`").default(defaultFortuneProbability), BackgroundURL: import_koishi.Schema.array(String).description("背景图片,可以写`txt路径(网络图片URL写进txt里)` 或者 `文件夹路径` 或者 `网络图片URL` <br> 建议参考 [emojihub-bili](/market?keyword=emojihub-bili)的图片方法 <br>推荐使用本地图片 以加快渲染速度").role("table").default([ import_node_path.default.join(__dirname, "./../data/backgroundFolder/miao.jpg"), import_node_path.default.join(__dirname, "./../data/backgroundFolder"), import_node_path.default.join(__dirname, "./../data/backgroundFolder/魔卡.txt"), import_node_path.default.join(__dirname, "./../data/backgroundFolder/ba.txt"), import_node_path.default.join(__dirname, "./../data/backgroundFolder/猫羽雫.txt"), import_node_path.default.join(__dirname, "./../data/backgroundFolder/miku.txt"), import_node_path.default.join(__dirname, "./../data/backgroundFolder/白圣女.txt") //path.join(__dirname, './../data/backgroundFolder/.txt'), ]) }).description("基础设置"), import_koishi.Schema.object({ screenshotquality: import_koishi.Schema.number().role("slider").min(0).max(100).step(1).default(50).description("设置图片压缩质量(%)"), HTML_setting: import_koishi.Schema.object({ UserNameColor: import_koishi.Schema.string().default("rgba(255,255,255,1)").role("color").description("用户名称的颜色").hidden(), //.hidden(), 暂时用不到了 MaskColor: import_koishi.Schema.string().default("rgba(0,0,0,0.5)").role("color").description("`蒙版`的颜色"), Maskblurs: import_koishi.Schema.number().role("slider").min(0).max(100).step(1).default(10).description("模版模糊半径"), HoroscopeTextColor: import_koishi.Schema.string().default("rgba(255,255,255,1)").role("color").description("`运势文字`颜色"), luckyStarGradientColor: import_koishi.Schema.boolean().description("开启后`运势星星`使用彩色渐变").default(true), HoroscopeDescriptionTextColor: import_koishi.Schema.string().default("rgba(255,255,255,1)").role("color").description("`运势说明文字`颜色"), DashedboxThickn: import_koishi.Schema.number().role("slider").min(0).max(20).step(1).default(5).description("`虚线框`的粗细"), Dashedboxcolor: import_koishi.Schema.string().default("rgba(255, 255, 255, 0.5)").role("color").description("`虚线框`的颜色"), fontPath: import_koishi.Schema.string().description("`请填写.ttf 字体文件的绝对路径`").default(import_node_path.default.join(__dirname, "./../data/千图马克手写体lite.ttf")) }).collapse().description("可自定义各种颜色搭配和字体") }).description("面板调节"), import_koishi.Schema.object({ markdown_button_mode: import_koishi.Schema.union([ import_koishi.Schema.const("unset").description("取消应用此配置项"), import_koishi.Schema.const("json").description("json按钮-----------20 群(频道不可用)"), import_koishi.Schema.const("markdown").description("被动md模板--------2000 DAU / 私域"), import_koishi.Schema.const("markdown_raw_json").description("被动md模板--------2000 DAU - 原生按钮"), import_koishi.Schema.const("raw").description("原生md------------10000 DAU"), import_koishi.Schema.const("raw_jrys").description("原生md-不渲染jrys-----------10000 DAU") ]).role("radio").description("markdown/按钮模式选择").default("unset") }).description("QQ官方按钮设置"), import_koishi.Schema.union([ import_koishi.Schema.object({ markdown_button_mode: import_koishi.Schema.const("json").required(), markdown_button_mode_initiative: import_koishi.Schema.boolean().description("开启后,使用 主动消息 发送markdown。<br>即开启后不带`messageId`发送<br>适用于私域机器人频道使用。私域机器人需要使用`被动md模板、json模板`并且开启此配置项<br>`单独发送按钮功能` 已经不能被新建的官方机器人使用").default(false), markdown_button_mode_keyboard: import_koishi.Schema.boolean().description("开启后,markdown加上按钮。关闭后,不加按钮内容哦<br>不影响markdown发送,多用于调试功能使用").default(true).experimental().hidden(), nested: import_koishi.Schema.object({ json_button_template_id: import_koishi.Schema.string().description("模板ID<br>形如 `123456789_1234567890` 的ID编号<br>更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)").pattern(/^\d+_\d+$/) }).collapse().description('➢表情包--按钮设置<br>更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)<hr style="border: 2px solid red"><hr style="border: 2px solid red">') }), import_koishi.Schema.object({ markdown_button_mode: import_koishi.Schema.const("markdown").required(), markdown_button_mode_initiative: import_koishi.Schema.boolean().description("开启后,使用 主动消息 发送markdown。<br>即开启后不带`messageId`发送<br>适用于私域机器人频道使用。私域机器人需要使用`被动md模板、json模板`并且开启此配置项").default(false), markdown_button_mode_keyboard: import_koishi.Schema.boolean().description("开启后,markdown加上按钮。关闭后,不加按钮内容哦<br>不影响markdown发送,多用于调试功能使用").default(true).experimental(), QQchannelId: import_koishi.Schema.string().description("`填入QQ频道的频道ID`,将该ID的频道作为中转频道 <br> 频道ID可以用[inspect插件来查看](/market?keyword=inspect) `频道ID应为纯数字`").experimental().pattern(/^\S+$/), nested: import_koishi.Schema.object({ markdown_button_template_id: import_koishi.Schema.string().description("md模板ID<br>形如 `123456789_1234567890` 的ID编号,发送markdown").pattern(/^\d+_\d+$/), markdown_button_keyboard_id: import_koishi.Schema.string().description("按钮模板ID<br>形如 `123456789_1234567890` 的ID编号,发送按钮").pattern(/^\d+_\d+$/), markdown_button_content_table: import_koishi.Schema.array(import_koishi.Schema.object({ raw_parameters: import_koishi.Schema.string().description("原始参数名称"), replace_parameters: import_koishi.Schema.string().description("替换参数名称") })).role("table").default([ { "raw_parameters": "your_markdown_text_1", "replace_parameters": "表情包来啦!" }, { "raw_parameters": "your_markdown_text_2", "replace_parameters": "这是你的表情包哦😽" }, { "raw_parameters": "your_markdown_img", "replace_parameters": "${img_pxpx}" }, { "raw_parameters": "your_markdown_url", "replace_parameters": "${img_url}" } ]).description("替换参数映射表<br>本插件会替换模板变量,请在左侧填入模板变量,右侧填入真实变量值。<br>本插件提供的参数有`encodedMessageTime`、`img_pxpx`、`img_url`、`ctx`、`session`、`config`<br>`img_pxpx`会被替换为`img#...px #...px`<br>`img_url`会被替换为`一个链接`,其中img_pxpx参数需要使用`canvas`服务<br>▶比如你可以使用`{{.session.userId}}`,这会被本插件替换为`真实的userId值`,若无匹配变量,则视为文本<br>更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)") }).collapse().description('➢表情包--按钮设置<br>更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)<hr style="border: 2px solid red"><hr style="border: 2px solid red">') }), import_koishi.Schema.object({ markdown_button_mode: import_koishi.Schema.const("markdown_raw_json").required(), markdown_button_mode_initiative: import_koishi.Schema.boolean().description("开启后,使用 主动消息 发送markdown。<br>即开启后不带`messageId`发送<br>适用于私域机器人频道使用。私域机器人需要使用`被动md模板、json模板`并且开启此配置项").hidden().default(false), markdown_button_mode_keyboard: import_koishi.Schema.boolean().description("开启后,markdown加上按钮。关闭后,不加按钮内容哦<br>不影响markdown发送,多用于调试功能使用").default(true).experimental(), QQchannelId: import_koishi.Schema.string().description("`填入QQ频道的频道ID`,将该ID的频道作为中转频道 <br> 频道ID可以用[inspect插件来查看](/market?keyword=inspect) `频道ID应为纯数字`").experimental().pattern(/^\S+$/), nested: import_koishi.Schema.object({ markdown_raw_json_button_template_id: import_koishi.Schema.string().description("md模板ID<br>形如 `123456789_1234567890` 的ID编号,发送markdown").pattern(/^\d+_\d+$/), markdown_raw_json_button_content_table: import_koishi.Schema.array(import_koishi.Schema.object({ raw_parameters: import_koishi.Schema.string().description("原始参数名称"), replace_parameters: import_koishi.Schema.string().description("替换参数名称") })).role("table").default([ { "raw_parameters": "your_markdown_text_1", "replace_parameters": "表情包来啦!" }, { "raw_parameters": "your_markdown_text_2", "replace_parameters": "这是你的表情包哦😽" }, { "raw_parameters": "your_markdown_img", "replace_parameters": "${img_pxpx}" }, { "raw_parameters": "your_markdown_url", "replace_parameters": "${img_url}" } ]).description("替换参数映射表<br>本插件会替换模板变量,请在左侧填入模板变量,右侧填入真实变量值。<br>本插件提供的参数有`encodedMessageTime`、`img_pxpx`、`img_url`、`ctx`、`session`、`config`<br>`img_pxpx`会被替换为`img#...px #...px`<br>`img_url`会被替换为`一个链接`,其中img_pxpx参数需要使用`canvas`服务<br>▶比如你可以使用`{{.session.userId}}`,这会被本插件替换为`真实的userId值`,若无匹配变量,则视为文本<br>更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)"), markdown_raw_json_button_keyboard: import_koishi.Schema.string().role("textarea", { rows: [12, 12] }).collapse().default('{\n "rows": [\n {\n "buttons": [\n {\n "render_data": {\n "label": "再来一张😺",\n "style": 2\n },\n "action": {\n "type": 2,\n "permission": {\n "type": 2\n },\n "data": "/${config.command}",\n "enter": true\n }\n },\n {\n "render_data": {\n "label": "查看原图😽",\n "style": 2\n },\n "action": {\n "type": 2,\n "permission": {\n "type": 2\n },\n "data": "/获取原图 ${encodedMessageTime}",\n "enter": true\n }\n }\n ]\n }\n ]\n}').description("实现QQ官方bot的按钮效果<br>在这里填入你的按钮内容,注意保持json格式,推荐在编辑器中编辑好后粘贴进来") }).collapse().description('➢表情包--按钮设置<br>更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)<hr style="border: 2px solid red"><hr style="border: 2px solid red">') }), import_koishi.Schema.object({ markdown_button_mode: import_koishi.Schema.const("raw").required(), markdown_button_mode_initiative: import_koishi.Schema.boolean().description("开启后,使用 主动消息 发送markdown。<br>即开启后不带`messageId`发送<br>适用于私域机器人频道使用。私域机器人需要使用`被动md模板、json模板`并且开启此配置项").hidden().default(false), markdown_button_mode_keyboard: import_koishi.Schema.boolean().description("开启后,markdown加上按钮。关闭后,不加按钮内容哦<br>不影响markdown发送,多用于调试功能使用").default(true).experimental(), QQchannelId: import_koishi.Schema.string().description("`填入QQ频道的频道ID`,将该ID的频道作为中转频道 <br> 频道ID可以用[inspect插件来查看](/market?keyword=inspect) `频道ID应为纯数字`").experimental().pattern(/^\S+$/), nested: import_koishi.Schema.object({ raw_markdown_button_content: import_koishi.Schema.string().role("textarea", { rows: [6, 6] }).collapse().default("## **今日运势😺**\n### 😽您今天的运势是:\n![${img_pxpx}](${img_url})").description("实现QQ官方bot的按钮效果,需要`canvas`服务。<br>在这里填入你的markdown内容。本插件会替换形如`{{.xxx}}`或`${xxx}`的参数为`xxx`。<br>本插件提供的参数有`encodedMessageTime`、`img_pxpx`、`img_url`、`ctx`、`session`、`config`<br>`img_pxpx`会被替换为`img#...px #...px`<br>`img_url`会被替换为`一个链接`更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)"), raw_markdown_button_keyboard: import_koishi.Schema.string().role("textarea", { rows: [12, 12] }).collapse().default('{\n "rows": [\n {\n "buttons": [\n {\n "render_data": {\n "label": "再来一张😺",\n "style": 2\n },\n "action": {\n "type": 2,\n "permission": {\n "type": 2\n },\n "data": "/${config.command}",\n "enter": true\n }\n },\n {\n "render_data": {\n "label": "查看原图😽",\n "style": 2\n },\n "action": {\n "type": 2,\n "permission": {\n "type": 2\n },\n "data": "/获取原图 ${encodedMessageTime}",\n "enter": true\n }\n }\n ]\n }\n ]\n}').description("实现QQ官方bot的按钮效果<br>在这里填入你的按钮内容,注意保持json格式,推荐在编辑器中编辑好后粘贴进来") }).collapse().description('➢表情包--按钮设置<br>更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)<hr style="border: 2px solid red"><hr style="border: 2px solid red">') }), import_koishi.Schema.object({ markdown_button_mode: import_koishi.Schema.const("raw_jrys").required(), markdown_button_mode_initiative: import_koishi.Schema.boolean().description("开启后,使用 主动消息 发送markdown。<br>即开启后不带`messageId`发送<br>适用于私域机器人频道使用。私域机器人需要使用`被动md模板、json模板`并且开启此配置项").hidden().default(false), markdown_button_mode_keyboard: import_koishi.Schema.boolean().description("开启后,markdown加上按钮。关闭后,不加按钮内容哦<br>不影响markdown发送,多用于调试功能使用").default(true).experimental(), QQchannelId: import_koishi.Schema.string().description("`填入QQ频道的频道ID`,将该ID的频道作为中转频道 <br> 频道ID可以用[inspect插件来查看](/market?keyword=inspect) `频道ID应为纯数字`").experimental().pattern(/^\S+$/), nested: import_koishi.Schema.object({ raw_jrys_markdown_button_content: import_koishi.Schema.string().role("textarea", { rows: [6, 6] }).collapse().default("${qqbotatuser}\n您的今日运势为:\n**${dJson.fortuneSummary}**\n${dJson.luckyStar}\n\n> ${dJson.unsignText}\n![${img_pxpx}](${img_url})\n\n> 仅供娱乐|相信科学|请勿迷信").description("实现QQ官方bot的按钮效果,需要`canvas`服务。<br>在这里填入你的markdown内容。本插件会替换形如`{{.xxx}}`或`${xxx}`的参数为`xxx`。<br>本插件提供的参数有`dJson`、`img_pxpx`、`img_url`、`ctx`、`session`、`config`<br>`img_pxpx`会被替换为`img#...px #...px`<br>`img_url`会被替换为`一个链接`更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)"), raw_jrys_markdown_button_keyboard: import_koishi.Schema.string().role("textarea", { rows: [12, 12] }).collapse().default('{\n "rows": [\n {\n "buttons": [\n {\n "render_data": {\n "label": "再来一张😺",\n "style": 2\n },\n "action": {\n "type": 2,\n "permission": {\n "type": 2\n },\n "data": "/${config.command}",\n "enter": true\n }\n }\n ]\n }\n ]\n}').description("实现QQ官方bot的按钮效果<br>在这里填入你的按钮内容,注意保持json格式,推荐在编辑器中编辑好后粘贴进来") }).collapse().description('➢表情包--按钮设置<br>更多说明,详见[➩项目README](https://github.com/shangxueink/koishi-shangxue-apps/tree/main/plugins/emojihub-bili)<hr style="border: 2px solid red"><hr style="border: 2px solid red">') }), import_koishi.Schema.object({}) ]), import_koishi.Schema.object({ enablecurrency: import_koishi.Schema.boolean().description("开启后,签到获取货币").default(false), currency: import_koishi.Schema.string().default("jrysprpr").description("monetary 数据库的 currency 字段名称"), maintenanceCostPerUnit: import_koishi.Schema.number().role("slider").min(0).max(1e3).step(1).default(100).description("签到获得的货币数量") }).description("monetary·通用货币设置"), import_koishi.Schema.object({ retryexecute: import_koishi.Schema.boolean().default(false).description(" `重试机制`。触发`渲染失败`时,是否自动重新执行") }).description("进阶功能"), import_koishi.Schema.union([ import_koishi.Schema.object({ retryexecute: import_koishi.Schema.const(true).required(), maxretrytimes: import_koishi.Schema.number().role("slider").min(0).max(10).step(1).default(1).description("最大的重试次数<br>`0`代表`不重试`") }), import_koishi.Schema.object({}) ]), import_koishi.Schema.object({ Repeated_signin_for_different_groups: import_koishi.Schema.boolean().default(false).description("允许同一个用户从不同群组签到"), consoleinfo: import_koishi.Schema.boolean().default(false).description("日志调试模式`日常使用无需开启`") }).description("调试功能") ]); function apply(ctx, config) { ctx.on("ready", async () => { const root = import_node_path.default.join(ctx.baseDir, "data", "jrys-prpr"); const jsonFilePath = import_node_path.default.join(root, "OriginalImageURL_data.json"); let cachedFontBase64 = null; const retryCounts = {}; if (!import_node_fs.default.existsSync(root)) { import_node_fs.default.mkdirSync(root, { recursive: true }); } if (!import_node_fs.default.existsSync(jsonFilePath)) { import_node_fs.default.writeFileSync(jsonFilePath, JSON.stringify([])); } ctx.model.extend("jrysprprdata", { userid: "string", // 用户ID唯一标识 channelId: "string", // 频道ID lastSignIn: "string" // 最后签到日期 }, { primary: ["userid", "channelId"] }); ctx.i18n.define("zh-CN", { commands: { [config.command]: { description: "查看今日运势", messages: { Getbackgroundimage: "获取原图,请发送:{0}", CurrencyGetbackgroundimage: "签到成功!获得点数: {0}\n获取原图,请发送:{1}", CurrencyGetbackgroundimagesplit: "签到成功!获得点数: {0}", hasSignedInTodaysplit: "今天已经签到过了,不再获得货币。", hasSignedInToday: "今天已经签到过了,不再获得货币。\n获取原图,请发送:{0}" } }, [config.command2]: { description: "获取运势原图", messages: { Inputerror: "请回复一张运势图,或者输入运势图的消息ID 以获取原图哦~", QQInputerror: "请输入运势图的消息ID以获取原图哦~", FetchIDfailed: "未能提取到消息ID,请确认回复的消息是否正确。", aleadyFetchID: "该消息背景已被获取过啦~ 我已经忘掉了~找不到咯", Failedtogetpictures: "获取运势图原图失败,请稍后再试" } } } }); if (config.GetOriginalImageCommand) { ctx.command(`${config.command2} <InputmessageId:text>`, { authority: 1 }).alias("获取原图").action(async ({ session }, InputmessageId) => { try { const isQQPlatform = session.platform === "qq"; const hasReplyContent = !!session.quote?.content; if (!hasReplyContent && !isQQPlatform && !InputmessageId) { return session.text(".Inputerror"); } if (isQQPlatform && !InputmessageId) { return session.text(".QQInputerror"); } const messageId = hasReplyContent ? session.quote.messageId : InputmessageId; logInfo(`尝试获取背景图: ${messageId}`); if (!messageId) { return session.text(".FetchIDfailed"); } const originalImageURL = await getOriginalImageURL(messageId); logInfo(`运势背景原图链接: ${originalImageURL}`); if (originalImageURL) { const sendsuccess = await session.send(import_koishi.h.image(originalImageURL)); if (config.autocleanjson && sendsuccess) { await deleteImageRecord(messageId, originalImageURL); } return; } else if (config.autocleanjson) { return session.text(".aleadyFetchID"); } else { return session.text(".FetchIDfailed"); } } catch (error) { ctx.logger.error("获取运势图原图时出错: ", error); return session.text(".Failedtogetpictures"); } }); } ctx.command(`${config.command}`, { authority: 1 }).userFields(["id"]).option("split", "-s 以图文输出今日运势").action(async ({ session, options }) => { let hasSignedInToday = await alreadySignedInToday(ctx, session.userId, session.channelId); retryCounts[session.userId] = retryCounts[session.userId] || 0; let Checkin_HintText_messageid; let backgroundImage = getRandomBackground(config); let BackgroundURL = backgroundImage.replace(/\\/g, "/"); let imageBuffer; const dJson = await getJrys(session); if (options.split) { if (config.Checkin_HintText) { Checkin_HintText_messageid = await session.send(config.Checkin_HintText); } let textjrys = ` ${dJson.fortuneSummary} ${dJson.luckyStar} ${dJson.signText} ${dJson.unsignText} `; let enablecurrencymessage; if (config.enablecurrency) { if (hasSignedInToday) { enablecurrencymessage = import_koishi.h.text(session.text(".hasSignedInTodaysplit")); } else { enablecurrencymessage = import_koishi.h.text(session.text(".CurrencyGetbackgroundimagesplit", [config.maintenanceCostPerUnit])); } } let backgroundImage2 = getRandomBackground(config); let BackgroundURL2 = backgroundImage2.replace(/\\/g, "/"); let BackgroundURL_base64 = await convertToBase64image(BackgroundURL2); let message = [ import_koishi.h.image(BackgroundURL_base64), import_koishi.h.text(textjrys), enablecurrencymessage ]; if (config.enablecurrency && !hasSignedInToday) { await updateUserCurrency(session.user.id, config.maintenanceCostPerUnit); } await recordSignIn(ctx, session.userId, session.channelId); await session.send(message); if (Checkin_HintText_messageid && config.recallCheckin_HintText) { await session.bot.deleteMessage(session.channelId, Checkin_HintText_messageid); } return; } if (config.Checkin_HintText) { Checkin_HintText_messageid = await session.send(config.Checkin_HintText); } let page; try { if (config.markdown_button_mode !== "raw_jrys") { page = await ctx.puppeteer.page(); await page.setViewport({ width: 1080, height: 1920 }); let BackgroundURL_base64 = await convertToBase64image(BackgroundURL); logInfo(config.HTML_setting.fontPath); if (!cachedFontBase64) { cachedFontBase64 = await getFontBase64(config.HTML_setting.fontPath); } const fontBase64 = cachedFontBase64; let insertHTMLuseravatar = session.event.user.avatar; let luckyStarHTML = ` .lucky-star { font-size: 60px; margin-bottom: 10px; } `; if (config.HTML_setting.luckyStarGradientColor) { luckyStarHTML = ` .lucky-star { font-size: 60px; margin-bottom: 10px; background: linear-gradient(to right, #fcb5b5, #fcd6ae, #fde8a6, #c3f7b1, #aed6fa, #c4aff5, #f1afcc); -webkit-background-clip: text; background-clip: text; color: transparent; } `; } const formattedDate = await getFormattedDate(); let HTMLsource = ` <!DOCTYPE html> <html lang="zh-CN"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <title>运势卡片</title> <style> @font-face { font-family: "千图马克手写体lite"; src: url('data:font/ttf;base64,${fontBase64}') format('truetype'); } body, html { height: 100%; margin: 0; overflow: hidden; font-family: "千图马克手写体lite"; } .background { background-image: url('${BackgroundURL_base64}'); background-size: cover; background-position: center; position: relative; width: 1080px; height: 1920px; } .overlay { position: absolute; bottom: 0; left: 0; width: 100%; min-height: 1%; background-color: ${config.HTML_setting.MaskColor}; backdrop-filter: blur(${config.HTML_setting.Maskblurs}px); border-radius: 20px 20px 0 0; overflow: visible; } .user-info { display: flex; align-items: center; padding: 10px 20px; position: relative; } .user-avatar { width: 120px; height: 120px; border-radius: 60px; background-image: url('${insertHTMLuseravatar}'); background-size: cover; background-position: center; margin-left: 20px; position: absolute; top: 40px; } .username { margin-left: 10px; color: ${config.HTML_setting.UserNameColor}; font-size: 50px; padding-top: 28px; } .fortune-info1 { display: flex; color: ${config.HTML_setting.HoroscopeTextColor}; flex-direction: column; align-items: center; position: relative; width: 100%; justify-content: center; /* 居中 */ margin-top: 0px; /* 上边距 */ } .fortune-info1 > * { margin: 10px; /* 元素之间的间距 */ } .fortune-info2 { color: ${config.HTML_setting.HoroscopeDescriptionTextColor}; padding: 0 20px; margin-top: 40px; } .lucky-star, .sign-text, .unsign-text { margin-bottom: 12px; font-size: 42px; } .fortune-summary { font