增加今天谁生日

This commit is contained in:
yeyang
2023-01-09 20:22:11 +08:00
parent 44c5d5ffdd
commit 2f6980d5a2
5 changed files with 83 additions and 64 deletions

View File

@@ -136,6 +136,10 @@ export class Basics extends plugin {
reg: Autisticreg,//我要自闭
fnc: 'Autistic'
},
{
reg: '^#?(今天|昨天|明天|后天|\\d{4}-\\d{1,2}-\\d{1,2})谁生日$',
fnc: 'groupBirthday'
}
]
})
@@ -728,19 +732,20 @@ export class Basics extends plugin {
//谁是龙王
async dragonKing(e) {
//图片版
//浏览器截
let url = `https://qun.qq.com/interactive/honorlist?gc=${e.group_id}&type=1&_wv=3&_wwv=129`
let screenshot = await Browser.Webpage(url, { "Cookie": Bot.cookies['qun.qq.com'] }, {
width: 375,
height: 667,
deviceScaleFactor: 3
}, true)
if (screenshot) return e.reply(screenshot)
//数据版
// let res = await QQInterface.dragon(e.group_id)
let res = await QQInterface.dragon(e.group_id)
e.reply([
// `本群龙王:${res.name}`,
// segment.image(res.avatar),
// `蝉联天数:${res.desc}`,
await Browser.Webpage(url, { "Cookie": Bot.cookies['qun.qq.com'] }, {
width: 700,
height: 700,
deviceScaleFactor: 3
}, true)
`本群龙王:${res.nick}`,
segment.image(`https://q1.qlogo.cn/g?b=qq&s=100&nk=${res.uin}`),
`蝉联天数:${res.avatar_size}`,
]);
}
@@ -765,7 +770,7 @@ export class Basics extends plugin {
return e.reply(ROLE_ERROR, true);
}
//图片截图
let url = `https://qun.qq.com/m/qun/activedata/speaking.html?gc=${e.group_id}&time=${/(7|)/.test(e.msg) ? 1 : 0}&_wv=3&&_wwv=128`
let url = `https://qun.qq.com/m/qun/activedata/speaking.html?gc=${e.group_id}&time=${/(7|)/.test(e.msg) ? 1 : 0}`
//接口数据
let res = await QQInterface.SpeakRank(e.group_id, /(7|七)天/.test(e.msg) ? 1 : 0)
if (!res) return e.reply("接口失效辣!!!")
@@ -776,8 +781,7 @@ export class Basics extends plugin {
e.reply([
...msg,
await Browser.Webpage(url, {
"Cookie":
Bot.cookies['qun.qq.com']
"Cookie": Bot.cookies['qun.qq.com']
}, {
width: 700,
height: 700,
@@ -788,8 +792,16 @@ export class Basics extends plugin {
//今日打卡
async DaySigned(e) {
//浏览器截图
let url = `https://qun.qq.com/v2/signin/list?gc=${e.group_id}}`
let screenshot = await Browser.Webpage(url, undefined, {
width: 375,
height: 667,
deviceScaleFactor: 2
}, true, common.getck('qun.qq.com', true), false)
if (screenshot) return e.reply(screenshot)
//出错后使用接口
let res = await QQInterface.signInToday(e.group_id)
if (!res) return e.reply("❎ 出错辣,请稍后重试")
if (res.retCode != 0) return e.reply("❎ 未知错误\n" + JSON.stringify(res));
@@ -799,4 +811,26 @@ export class Basics extends plugin {
let msg = list.infos.map((item, index) => `${index + 1}:${item.uidGroupNick}-${item.uid}\n打卡时间:${moment(item.signedTimeStamp * 1000).format("YYYY-MM-DD HH:mm:ss")}`).join("\n");
e.reply(msg)
}
//查看某天谁生日
async groupBirthday(e) {
let date = e.msg.match(/^#?(今天|昨天|明天|后天|\d{4}-\d{1,2}-\d{1,2})谁生日$/)[1]
if (date == '昨天') {
date = moment().subtract(1, 'days').format("YYYY-MM-DD");
} else if (date == '明天') {
date = moment().add(1, 'days').format("YYYY-MM-DD");
} else if (date == '后天') {
date = moment().add(2, 'days').format("YYYY-MM-DD");
} else if (date == '今天') {
date = moment().format("YYYY-MM-DD");
}
let url = `https://qun.qq.com/qqweb/m/qun/calendar/detail.html?_wv=1031&_bid=2340&src=3&gc=${e.group_id}&type=2&date=${date}`
e.reply(
await Browser.Webpage(url, undefined, {
width: 375,
height: 667,
deviceScaleFactor: 2
}, true, common.getck('qun.qq.com', true))
)
}
}

View File

@@ -243,6 +243,10 @@ export const helpList = [{
"title": "#acg刻晴",
"desc": "acgcos",
"icon": 9
}, {
"title": "#今天谁生日",
"desc": "今天可换为昨天或后天或日期",
"icon": 12
},]
},
{

View File

@@ -1,5 +1,8 @@
import puppeteer from 'puppeteer'
import { segment } from 'oicq'
let sleep = (ms) => {
return new Promise((resolve) => setTimeout(resolve, ms))
}
export default new class Browser {
/**
* @description:返回网页截图
@@ -14,7 +17,8 @@ export default new class Browser {
width: 1920,
height: 1080,
deviceScaleFactor: 1
}, font = false) {
}, font = false, ck = false, fullPage = true) {
const browser = await puppeteer.launch({
args: [
'--disable-gpu',
@@ -27,23 +31,24 @@ export default new class Browser {
]
});
const page = await browser.newPage();
await page.setExtraHTTPHeaders(headers)
await page.goto(url, { 'timeout': 1000 * 30, 'waitUntil': 'networkidle0' });
await page.setViewport(setViewport);
await page.addStyleTag({
content: font ? `* {font-family: "汉仪文黑-65W","雅痞-简","圆体-简","PingFang SC","微软雅黑", sans-serif !important;}` : ''
})
try {
await page.setExtraHTTPHeaders(headers)
if (ck) await page.setCookie(...ck)
await page.goto(url, { 'timeout': 1000 * 30, 'waitUntil': 'networkidle0' });
await page.setViewport(setViewport);
await page.addStyleTag({
content: font ? `* {font-family: "汉仪文黑-65W","雅痞-简","圆体-简","PingFang SC","微软雅黑", sans-serif !important;}` : ''
})
let res = await page.screenshot({
// path: './paper.jpeg',
type: 'jpeg',
fullPage: true,
fullPage,
quality: 100
}).catch(err => {
console.log('截图失败');
console.log(err);
});
// await page.waitFor(5000);
return segment.image(res)
} catch (e) {
console.log('执行异常');
@@ -53,41 +58,4 @@ export default new class Browser {
}
}
/**
* @description: 截图不滚动不等待加载
* @param {String} url 网页链接
* @param {Number} width 页面的宽度
* @param {Number} height 页面的高度
* @return {image} 图片
*/
async webPreview(url, width = 1920, height = 1080, headers = {}) {
const browser = await puppeteer.launch({
headless: true,
args: [
'--disable-gpu',
'--disable-dev-shm-usage',
'--disable-setuid-sandbox',
'--no-first-run',
'--no-sandbox',
'--no-zygote',
'--single-process'
]
});
const page = await browser.newPage();
await page.setExtraHTTPHeaders(headers)
await page.goto(url);
await page.setViewport({
width: width,
height: height
});
let res = await page.screenshot({
fullPage: true
})
await browser.close();
return segment.image(res)
}
}

View File

@@ -204,7 +204,7 @@ export default new class assistant {
.then(res => res.text()).catch(err => console.error(err));
let data = res.match(/<script>window.__INITIAL_STATE__=(.*?)<\/script>/)
if (!data) return false;
return data[1]
return JSON.parse(data[1])?.currentTalkative
}

View File

@@ -198,12 +198,25 @@ export default new class newCommon {
* @param {String} data 如qun.qq.com
* @return {Object}
*/
getck(data) {
getck(data, transformation) {
let cookie = Bot.cookies[data]
let ck = cookie.replace(/=/g, `":"`).replace(/;/g, `","`).replace(/ /g, "").trim()
ck = ck.substring(0, ck.length - 2)
ck = `{"`.concat(ck).concat("}")
return JSON.parse(ck)
ck = JSON.parse(`{"`.concat(ck).concat("}"))
if (transformation) {
let arr = []
for (let i in ck) {
arr.push({
name: i,
value: ck[i],
domain: data,
path: "/",
expires: Date.now() + 3600 * 1000
})
}
return arr
} else return ck
}
/**默认秒转换格式 */