142 lines
4.2 KiB
JavaScript
142 lines
4.2 KiB
JavaScript
import plugin from "../../../lib/plugins/plugin.js"
|
||
import { Config } from "../components/index.js"
|
||
import { setu, common } from "../model/index.js"
|
||
import { Admin } from "./admin.js"
|
||
import translateChinaNum from "../tools/translateChinaNum.js"
|
||
|
||
const NumReg = "[零一壹二两三四五六七八九十百千万亿\\d]+"
|
||
|
||
export class SeSe extends plugin {
|
||
constructor () {
|
||
super({
|
||
name: "椰奶setu",
|
||
event: "message",
|
||
priority: 500,
|
||
rule: [
|
||
{
|
||
reg: "^#椰奶tag(.*)$",
|
||
fnc: "setuTag"
|
||
},
|
||
{
|
||
reg: `^#(setu|无内鬼)\\s?((${NumReg})张)?$`, // 无内鬼
|
||
fnc: "setuRandom"
|
||
},
|
||
{
|
||
reg: `^#(撤回间隔|群(c|C)(d|D))(${NumReg})(s|秒)?$`,
|
||
fnc: "setGroupRecallAndCD",
|
||
event: "message.group",
|
||
permission: "master"
|
||
},
|
||
{
|
||
reg: "^#(开启|关闭)(私聊)?涩涩$",
|
||
fnc: "setSeSe",
|
||
permission: "master"
|
||
},
|
||
{
|
||
reg: `^#?设置cd\\s?((\\d+)\\s)?(${NumReg})(s|秒)?$`, // 设置cd
|
||
fnc: "setCd",
|
||
permission: "master"
|
||
}
|
||
]
|
||
})
|
||
}
|
||
|
||
async setuRandom (e) {
|
||
if (!await this._Authentication(e)) return
|
||
|
||
const cdTime = setu.getRemainingCd(e.user_id, e.group_id)
|
||
|
||
if (cdTime) return e.reply(` ${setu.CDMsg}你的CD还有${cdTime}`, false, { at: true })
|
||
|
||
let num = e.msg.match(new RegExp(NumReg))
|
||
num = num ? translateChinaNum(num[0]) : 1
|
||
if (num > 20) {
|
||
return e.reply("❎ 最大张数不能大于20张")
|
||
} else if (num > 6) {
|
||
e.reply("你先等等,你冲的有点多~")
|
||
}
|
||
|
||
// 开始执行
|
||
e.reply(setu.startMsg)
|
||
|
||
await setu.setuApi(setu.getR18(e.group_id), num)
|
||
.then(res => setu.sendMsgOrSetCd(e, res))
|
||
.catch(err => common.handleException(e, err))
|
||
}
|
||
|
||
// tag搜图
|
||
async setuTag (e) {
|
||
if (!await this._Authentication(e)) return
|
||
|
||
let cdTime = setu.getRemainingCd(e.user_id, e.group_id)
|
||
if (cdTime) return e.reply(` ${setu.CDMsg}你的CD还有${cdTime}`, false, { at: true })
|
||
|
||
let tag = e.msg.replace(/#|椰奶tag/g, "").trim()
|
||
let num = e.msg.match(new RegExp(`(${NumReg})张`))
|
||
if (!num) {
|
||
num = 1
|
||
} else {
|
||
tag = tag.replace(num[0], "").trim()
|
||
num = translateChinaNum(num[1])
|
||
}
|
||
|
||
if (num > 20) {
|
||
return e.reply("❎ 最大张数不能大于20张")
|
||
} else if (num > 6) {
|
||
e.reply("你先等等,你冲的有点多~")
|
||
} else {
|
||
e.reply(setu.startMsg)
|
||
}
|
||
|
||
if (!tag) return e.reply("tag为空!!!", false, { at: true })
|
||
tag = tag.split(" ")?.map(item => item.split("|"))
|
||
if (tag.length > 3) return e.reply("tag最多只能指定三个哦~", false, { at: true })
|
||
|
||
await setu.setuApi(setu.getR18(e.group_id), num, tag)
|
||
.then(res => setu.sendMsgOrSetCd(e, res))
|
||
.catch(err => common.handleException(e, err))
|
||
}
|
||
|
||
async _Authentication (e) {
|
||
if (e.isMaster) return true
|
||
const { allowPM, limit } = Config.setu
|
||
if (!allowPM && !e.isGroup) {
|
||
e.reply("主人已禁用私聊该功能")
|
||
return false
|
||
}
|
||
if (!common.checkSeSePermission(e, "sesepro")) return false
|
||
if (!await common.limit(e.user_id, "setu", limit)) {
|
||
e.reply("您已达今日「setu」次数上限", true, { at: true })
|
||
return false
|
||
}
|
||
return true
|
||
}
|
||
|
||
// 设置群撤回间隔和cd
|
||
async setGroupRecallAndCD (e) {
|
||
let num = e.msg.match(new RegExp(NumReg))
|
||
num = translateChinaNum(num[0])
|
||
let type = /撤回间隔/.test(e.msg)
|
||
setu.setGroupRecallTimeAndCd(e.group_id, num, type)
|
||
new Admin().SeSe_Settings(e)
|
||
}
|
||
|
||
// 开启r18
|
||
async setSeSe (e) {
|
||
let isopen = !!/开启/.test(e.msg)
|
||
setu.setR18(e.group_id, isopen)
|
||
new Admin().SeSe_Settings(e)
|
||
}
|
||
|
||
// 指令设置
|
||
async setCd (e) {
|
||
let reg = `^#?设置cd\\s?((\\d+)\\s)?(${NumReg})(s|秒)?$`
|
||
let regRet = e.msg.match(new RegExp(reg))
|
||
let qq = e.message.find(item => item.type == "at")?.qq ?? regRet[2]
|
||
let cd = translateChinaNum(regRet[3])
|
||
if (!qq) return e.reply("❎ 请输入要设置QQ", true)
|
||
if (!cd) return e.reply("❎ CD为空,请检查", true)
|
||
setu.setUserCd(e, qq ?? regRet[2], cd)
|
||
}
|
||
}
|