import plugin from '../../lib/plugins/plugin.js'
import { segment } from "oicq";
// import { getGroupMemberInfo } from "oicq";
import fetch from "node-fetch";
import lodash from "lodash";
import moment from "moment";
// 使用方法:
// #二次元的我
// #我的成分
// #答案之书+你心中的疑惑
// #观音灵签
// #看头像@xx #看头像自己
// #神之眼@xx #神之眼自己
// #藏头诗五言九章是男同(默认五言,可以不用带) #藏尾诗七律九章是男同
// v1.1~1.2 俺也忘了改啥了
// v1.3 新增观音灵签
// v1.4 新增看头像功能
// v1.5 新增查看神之眼(根据QQ生成属性)
// v1.5.1 修复雷系神之眼undefined,加了头像和神之眼的开关
// v1.6 新增藏头诗藏尾诗
// 如有问题和建议可以@渔火反馈
//项目路径
//=============================这里更改相关设置==================\\
// 这里是各功能的开关,改为false即可关闭功能
let ercy = true; //二次元的我
let chengfen = true; //我的成分
let daan = true; //答案之书
let qiuqian = true; //观音灵签
let kantouxiang = true; //看头像
let shenzhiyan = true; //看神之眼
let cangtou = true; //藏头诗
// 这里设置是否开启CD,设为true则有CD
let ercyCD = false; //二次元的我
let chengfenCD = false; //我的成分
let daanCD = false; //答案之书
let qiuqianCD = false; //观音灵签
// 这里设置CD时长,单位是分钟,不建议写0会出现未知冗余
let ercy_time = 1; //二次元的我
let chengfen_time = 1; //我的成分
let daan_time = 1; //答案之书
let qiuqian_time = 1; //观音灵签
//==============================================================//
export class example extends plugin {
constructor() {
super({
/** 功能名称 */
name: '答案之书',
/** 功能描述 */
dsc: '【哪个群友是我老婆|老公】',
/** https://oicqjs.github.io/oicq/#events */
event: 'message',
/** 优先级,数字越小等级越高 */
priority: 5000,
rule: [
{
reg: "^#*二次元的我$", //匹配消息正则,命令正则
fnc: 'ercyFUN'
},
{
reg: "^#*我的成分$", //匹配消息正则,命令正则
fnc: 'chengfenFUN'
},
{
reg: "^#*答案之书(.*)$", //匹配消息正则,命令正则
fnc: 'daanFUN'
},
{
reg: "^#*观音灵签$", //匹配消息正则,命令正则
fnc: 'qiuqianFUN'
},
{
reg: "^#*看头像(.*)$", //匹配消息正则,命令正则
fnc: ' kantouxiangFUN'
},
{
reg: "^#*神之眼(.*)$", //匹配消息正则,命令正则
fnc: 'shenzhiyanFUN'
},
{
reg: "^#*藏(头|尾)诗(.*)$", //匹配消息正则,命令正则
fnc: 'cangtouFUN'
}
]
})
}
//二次元的我===========================================================================
async ercyFUN(e) {
if (!ercy) return true;
let data = await redis.get(`Yunzai:setlinshimsg:${e.user_id}_ercy`); //先获取这个逼 看看有没有去进程在线
if (data) {
// console.log(data)
data = JSON.parse(data)
if (ercyCD) {
if (data.num != 0) {
e.reply([segment.at(e.user_id), "该命令有" + ercy_time + "分钟CD~"]);
return true;
}
}
}
// 先尝试从数据库获取记录======================================
// 当前日期,格式化为 DD
let date = moment(new Date()).format('DD')
// console.log(date)
// 获取数据库中的记录
let ercydata = await JSON.parse(await redis.get(`Yunzai:setlinshimsg:ercydata_${e.user_id}`));
// console.log("redis获取到的data:",ercydata)
// 如果获取到记录,且记录中的日期等于当前日期,则直接发送记录中的数据
if (ercydata && ercydata.date == date) {
e.reply(ercydata.dsc)
}
// 如果没有记录或者记录中的日期不是今天的日期,则调用接口获取并存入记录
else {
let url = `http://ovooa.com/API/Ser/api?name=${e.sender.card}『${lodash.random(0, 100)}』&type=json`;
let response = await fetch(url);
let res = await response.json();
if (res.code == -1) {
e.reply("参数错误!");
return true
}
res.text = res.text.replace(/『(.+?)』/g, "");
let msg = [
//@用户
// segment.at(e.user_id),
// "\n",
//头像
//segment.image(`https://q1.qlogo.cn/g?b=qq&s=0&nk=${e.user_id}`),
//用户的二次元属性
segment.text(res.text)
];
e.reply(msg);
// 将接口处获取到的记录存入redis数据库
let ercydata = {
// qq: e.user_id,
// time:moment(new Date()).format('YYYY-MM-DD HH:mm:ss')
date: moment(new Date()).format('DD'),
dsc: msg
}
// console.log(ercydata)
redis.set(`Yunzai:setlinshimsg:ercydata_${e.user_id}`, JSON.stringify(ercydata), { //写入缓存值
EX: parseInt(2 * 24 * 60 * 60)
});
}
redis.set(`Yunzai:setlinshimsg:${e.user_id}_ercy`, `{"num":1,"booltime":${ercyCD}}`, { //写入缓存值
EX: parseInt(60 * ercy_time)
});
return true; //返回true 阻挡消息不再往下
}
//我的成分====================================================================================
async chengfenFUN(e) {
if (!chengfen) return true;
let data = await redis.get(`Yunzai:setlinshimsg:${e.user_id}_chengfen`); //先获取这个逼 看看有没有去进程在线
if (data) {
console.log(data)
data = JSON.parse(data)
if (chengfenCD) {
if (data.num != 0) {
e.reply([segment.at(e.user_id), "该命令有" + chengfen_time + "分钟CD~"]);
return true;
}
}
}
let url = `http://ovooa.com/API/name/api.php?msg=${e.sender.card}『${lodash.random(0, 100)}』&type=json`;
let response = await fetch(url);
let res = await response.json();
if (res.code == -1) {
e.reply("参数错误!");
return true
}
res.text = res.text.replace(/『(.+?)』/g, "")
res.text = res.text.replace("泡在福尔马林里面的内脏", "沾着晨露的小黄花").trim();
res.text = res.text.replace(/“|”/g, "").trim();
let msg = [
//@用户
// segment.at(e.user_id),
// "\n",
//头像
// segment.image(`https://q1.qlogo.cn/g?b=qq&s=0&nk=${e.user_id}`),
//用户的成分
segment.text(res.text)
];
e.reply(msg);
redis.set(`Yunzai:setlinshimsg:${e.user_id}_chengfen`, `{"num":1,"booltime":${chengfenCD}}`, { //写入缓存值
EX: parseInt(60 * chengfen_time)
});
return true; //返回true 阻挡消息不再往下
}
// 答案之书================================================================
async daanFUN(e) {
if (!daan) return true;
try {
let data = await redis.get(`Yunzai:setlinshimsg:${e.user_id}_daan`); //先获取这个逼 看看有没有去进程在线
if (data) {
console.log(data)
data = JSON.parse(data)
if (daanCD) {
if (data.num != 0) {
e.reply([segment.at(e.user_id), "该命令有" + daan_time + "分钟CD~"]);
return true;
}
}
}
let url = `http://ovooa.com/API/daan/api?type=json`;
let response = await fetch(url);
let res = await response.json();
let msg = [
//@用户
// segment.at(e.user_id),
// "\n",
//头像
//segment.image(`https://q1.qlogo.cn/g?b=qq&s=0&nk=${e.user_id}`),
// "\n",
segment.text(res.data.zh),
"\n",
segment.text(res.data.en),
];
e.reply(msg, true);
redis.set(`Yunzai:setlinshimsg:${e.user_id}_daan`, `{"num":1,"booltime":${daanCD}}`, { //写入缓存值
EX: parseInt(60 * daan_time)
});
} catch (error) {
let msg = [
"给答案之书整不会了",
segment.image("https://c2cpicdw.qpic.cn/offpic_new/1761869682//1761869682-4172686859-71B1FBA58A05D2C62802B570F00A4CFB/0?term=3"),
];
e.reply(msg, true);
return true;
}
return true; //返回true 阻挡消息不再往下
}
//观音灵签===========================================================================
async qiuqianFUN(e) {
console.log("1");
if (!qiuqian) return true;
let data = await redis.get(`Yunzai:setlinshimsg:${e.user_id}_qiuqian`); //先获取这个逼 看看有没有去进程在线
if (data) {
console.log(data)
data = JSON.parse(data)
if (qiuqianCD) {
if (data.num != 0) {
e.reply([segment.at(e.user_id), "该命令有" + qiuqian_time + "分钟CD~"]);
return true;
}
}
}
// let url = `http://ovooa.com/API/Ser/api?name=${e.sender.card}『${lodash.random(0, 100)}』&type=json`;
let url = `http://ovooa.com/API/chouq/api.php`;
let response = await fetch(url);
let res = await response.json();
console.log(res);
if (res.code != 1) {
e.reply("出错了哦~");
return true
}
let msg = [
//@用户
segment.at(e.user_id),
"\n第", segment.text(res.data.format), "签:", segment.text(res.data.draw), "\n",
segment.image(res.data.image),
"【解日】:", segment.text(res.data.explain), "\n",
"【仙机】:", segment.text(res.data.details), "\n",
"【签语】:", segment.text(res.data.annotate), "\n",
"【起源】:", segment.text(res.data.source),
];
e.reply(msg);
redis.set(`Yunzai:setlinshimsg:${e.user_id}_qiuqian`, `{"num":1,"booltime":${qiuqianCD}}`, { //写入缓存值
EX: parseInt(60 * qiuqian_time)
});
return true; //返回true 阻挡消息不再往下
}
//看神之眼===========================================================================
async kantouxiangFUN(e) {
if (!e.isGroup || !kantouxiang) return false;
if (e.msg.match('自己')) {
e.reply(segment.image(`https://q1.qlogo.cn/g?b=qq&s=0&nk=${e.user_id}`))
return true
}
if (!e.at) {
e.reply("发送看头像@xx,可以快捷查看ta的头像哦~")
return true
}
e.reply(segment.image(`https://q1.qlogo.cn/g?b=qq&s=0&nk=${e.at}`))
return true; //返回true 阻挡消息不再往下
}
//看神之眼===========================================================================
async shenzhiyanFUN(e) {
if (!shenzhiyan) return false;
if (!e.msg.match('自己') && !e.at) {
e.reply("发送神之眼@xx,或者神之眼自己,可以查看ta的和你的神之眼哦~")
return true
}
// console.log(e)
var dic = {
0: "https://gchat.qpic.cn/gchatpic_new/1761869682/1023102458-2849443945-C7F8992AD44A89FD12E043C97F9B4B3F/0?term=3",//火神之眼图片
1: "https://gchat.qpic.cn/gchatpic_new/1761869682/1023102458-3000881371-7B8A998923FA5A50E85559A15EEED082/0?term=3",//水神之眼图片
2: "https://gchat.qpic.cn/gchatpic_new/1761869682/1023102458-3197120511-DB03E53C7279DB17DA7BA46D3F8B930C/0?term=3", //冰神之眼图片
3: "https://gchat.qpic.cn/gchatpic_new/1761869682/1023102458-2895037012-DE3813A9147D4D9820B76677B61BDF91/0?term=3",//风神之眼图片
4: "https://gchat.qpic.cn/gchatpic_new/1761869682/1023102458-2995945814-9E11498825D98086AA1C5EDC5E8B224B/0?term=3",//雷神之眼图片
5: "https://gchat.qpic.cn/gchatpic_new/1761869682/1023102458-3164811676-0F706954315979715490227CC653F8EA/0?term=3",//草神之眼图片
6: "https://gchat.qpic.cn/gchatpic_new/1761869682/1023102458-3113929476-4E53C2897724F4FA9DE12EF128A17634/0?term=3"//岩神之眼图片
}
var dic2 = { 0: "火", 1: "水", 2: "冰", 3: "风", 4: "雷", 5: "草", 6: "岩" }
let qq = 0;
let name = "";
if (e.msg.match('自己')) {
qq = e.user_id * 1;
name = e.sender.card;
} else if (e.at) {
qq = e.at * 1
let member = await Bot.getGroupMemberInfo(e.group_id, e.at).catch((err) => { })
// console.log(member)
name = member.nickname
} else return true;
let type = qq % 7;
let msg = [
`${name}的神之眼是${dic2[type]}属性哦`,
segment.image(dic[type])
]
e.reply(msg)
return true; //返回true 阻挡消息不再往下
}
//藏头诗===========================================================================
async cangtouFUN(e) {
if (!cangtou) return false;
let a = 1
let b = 5
if (e.msg.match('藏头诗')) {
a = 1
} else if (e.msg.match('藏尾诗')) {
a = 0
} else return false
if (e.msg.match('五言')) {
b = 5
} else if (e.msg.match('七律')) {
b = 7
}
let msg = e.msg.replace(/#|藏头诗|藏尾诗|五言|七律/g, "").trim();
var reg = /[\u4e00-\u9fa5]/g;
msg = msg.match(reg).join("");
if (!msg) return false;
// console.log(msg);
let url = `http://xiaobai.klizi.cn/API/other/betan.php?msg=${msg}&a=${a}&b=${b}`;
let response = await fetch(url);
let res = await response.text();
// e.reply(msg);
e.reply(segment.text(res));
return true; //返回true 阻挡消息不再往下
}
}
console