Files
yenai-plugin/apps/assistant/Qzone.js
2024-04-26 19:29:36 +08:00

149 lines
4.4 KiB
JavaScript

import _ from "lodash"
import moment from "moment"
import { common, QQApi } from "../../model/index.js"
import { API_ERROR } from "../../constants/errorMsg.js"
export class Qzone extends plugin {
constructor() {
super({
name: "椰奶助手-空间",
event: "message",
priority: 500,
rule: [
{
reg: "^#获?取说说列表(\\d+)?$",
fnc: "Qzonelist"
},
{
reg: "^#删除?说说(\\d+)$",
fnc: "Qzonedel"
},
{
reg: "^#发说说",
fnc: "Qzonesay"
},
{
reg: "^#(清空说说|清空留言)$",
fnc: "QzonedelAll"
}
]
})
}
/**
* QQ空间 说说列表
* @param e
*/
async Qzonelist(e) {
if (!common.checkPermission(e, "master")) return
let page = e.msg.replace(/#|获?取说说列表/g, "").trim()
if (!page) {
page = 0
} else {
page = page - 1
}
// 获取说说列表
let list = await new QQApi(e).getQzone(5, page * 5)
if (!list) return e.reply(API_ERROR)
if (list.total == 0) return e.reply("✅ 说说列表为空")
let msg = [
"✅ 获取成功,说说列表如下:\n",
...list.msglist.map((item, index) =>
`${page * 5 + index + 1}.${_.truncate(item.content, { length: 15 })}\n- [${item.secret ? "私密" : "公开"}] | ${moment(item.created_time * 1000).format("MM/DD HH:mm")} | ${item.commentlist?.length || 0}条评论\n`
),
`页数:[${page + 1}/${Math.ceil(list.total / 5)}]`
]
e.reply(msg)
}
/**
* 删除说说
* @param e
*/
async Qzonedel(e) {
if (!common.checkPermission(e, "master")) return
let pos = e.msg.match(/\d+/)
// 获取说说列表
let list = await new QQApi(e).getQzone(1, pos - 1)
if (!list) return e.reply(API_ERROR)
if (!list.msglist) return e.reply("❎ 未获取到该说说")
// 要删除的说说
let domain = list.msglist[0]
// 请求接口
let result = await new QQApi(e).delQzone(domain.tid, domain.t1_source)
if (!result) return e.reply(API_ERROR)
// debug
logger.debug(e.logFnc, result)
if (result.subcode != 0) e.reply("❎ 未知错误" + JSON.parse(result))
// 发送结果
e.reply(`✅ 删除说说成功:\n ${pos}.${_.truncate(domain.content, { length: 15 })} \n - [${domain.secret ? "私密" : "公开"}] | ${moment(domain.created_time * 1000).format("MM/DD HH:mm")} | ${domain.commentlist?.length || 0} 条评论`)
}
/**
* 发说说
* @param e
*/
async Qzonesay(e) {
if (!common.checkPermission(e, "master")) return
let con = e.msg.replace(/#|发说说/g, "").trim()
let result = await new QQApi(e).setQzone(con, e.img)
if (!result) return e.reply(API_ERROR)
if (result.code != 0) return e.reply(`❎ 说说发表失败\n${JSON.stringify(result)}`)
let msg = [ "✅ 说说发表成功,内容:\n", _.truncate(result.content, { length: 15 }) ]
if (result.pic) {
msg.push(segment.image(result.pic[0].url1))
}
msg.push(`\n- [${result.secret ? "私密" : "公开"}] | ${moment(result.t1_ntime * 1000).format("MM/DD HH:mm")}`)
e.reply(msg)
}
/**
* 清空说说和留言
* @param e
*/
async QzonedelAll(e) {
if (!common.checkPermission(e, "master")) return
if (/清空说说/.test(e.msg)) {
this.setContext("_QzonedelAllContext")
e.reply("✳️ 即将删除全部说说请发送:\n" + "------确认清空或取消------")
this.e.Qzonedetermine = true
} else if (/清空留言/.test(e.msg)) {
this.setContext("_QzonedelAllContext")
e.reply("✳️ 即将删除全部留言请发送:\n" + "------确认清空或取消------")
this.e.Qzonedetermine = false
}
}
async _QzonedelAllContext() {
let msg = this.e.msg
if (/#?确认清空/.test(msg)) {
this.finish("_QzonedelAllContext")
let result
if (this.e.Qzonedetermine) {
result = await new QQApi(this.e).delQzoneAll()
} else {
result = await new QQApi(this.e).delQzoneMsgbAll()
}
this.e.reply(result)
return true
} else if (/#?取消/.test(msg)) {
this.finish("_QzonedelAllContext")
this.e.reply("✅ 已取消")
return false
} else {
this.setContext("_QzonedelAllContext")
this.e.reply("❎ 请输入:确认清空或取消")
return false
}
}
}