修改接口

This commit is contained in:
yeyang
2023-01-05 03:52:41 +08:00
parent 21f47e3757
commit dddf259364
5 changed files with 238 additions and 168 deletions

View File

@@ -99,10 +99,6 @@ export class example extends plugin {
reg: '^#获取(群|好友)列表$',
fnc: 'Grouplist'
},
{
reg: '^#群星级$',
fnc: 'Group_xj'
},
{
reg: '^#(开启|关闭)戳一戳$',
fnc: 'cyc'
@@ -686,72 +682,33 @@ export class example extends plugin {
async Grouplist(e) {
if (!e.isMaster) return;
let listMap;
let message = [];
let list = []
let yes = false
let msg = [];
if (/群列表/.test(e.msg)) {
//获取群列表并转换为数组
listMap = Array.from(Bot.gl.values())
let listMap = Array.from(Bot.gl.values())
//添加有几个群
message.push(`群列表如下,共${listMap.length}个群`)
msg.push(`群列表如下,共${listMap.length}个群`)
//遍历添加
listMap.forEach((item, index) => {
list.push(`${index + 1}${item.group_name}(${item.group_id})\n`)
})
yes = true
msg.push(listMap.map((item, index) => `${index + 1}${item.group_name}(${item.group_id})`).join("\n"))
//提示信息
msg.push("可使用 #退群123456789 来退出某群")
msg.push("可使用 #发群列表 <序号> <消息> 来快速发送消息")
msg.push(`多个群聊请用 "," 分隔 不能大于3 容易寄`)
} else if (/好友列表/.test(e.msg)) {
//获取好友列表并转换为数组
listMap = Array.from(Bot.fl.values())
let listMap = Array.from(Bot.fl.values())
//添加有多少个好友
message.push(`好友列表如下,共${listMap.length}个好友`)
msg.push(`好友列表如下,共${listMap.length}个好友`)
//遍历添加
listMap.forEach((item, index) => {
list.push(`${index + 1}${item.nickname}(${item.user_id})\n`)
})
msg.push(listMap.map((item, index) => `${index + 1}${item.nickname}(${item.user_id})`).join("\n"))
//提示信息
msg.push("可使用 #删好友123456789 来删除某人")
}
//去除最后一个的换行符
list[list.length - 1] = list[list.length - 1].replace(/\n/, "")
message.push(list)
if (yes) {
message.push("可使用 #退群123456789 来退出某群")
message.push("可使用 #发群列表 <序号> <消息> 来快速发送消息")
message.push(`多个群聊请用 "," 分隔 不能大于3 容易寄`)
} else {
message.push("可使用 #删好友123456789 来删除某人")
}
Cfg.getforwardMsg(e, message)
return true
Cfg.getforwardMsg(e, msg)
}
/**群星级 */
async Group_xj(e) {
if (e.isPrivate) return e.reply("请在群聊使用哦~")
if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) return;
QQInterface.getGroup_xj(e)
}
/**戳一戳 */
async cyc(e) {
if (!e.isMaster) return;
let yes = 1;
if (/开启/.test(e.msg)) yes = 0;
let ck = Cfg.getck("vip.qq.com")
let url = `http://xiaobai.klizi.cn/API/qqgn/qun_cyc.php?uin=${Bot.uin}&skey=${ck.skey}&pskey=${ck.p_skey}&switch=${yes}`
let result = await fetch(url).then(res => res.json()).catch(err => console.log(err))
if (!result) return e.reply("❎ 接口失效")
e.reply(`✅ 已${yes ? '关闭' : '开启'}戳一戳功能`)
}
//引用撤回
async recallMsgown(e) {
if (!e.source) return
@@ -795,31 +752,38 @@ export class example extends plugin {
}
if (e.isGroup) await e.recall();
}
//开关好友添加
async friend_switch(e) {
if (!e.isMaster) return
let ck = Cfg.getck("ti.qq.com")
let api = `http://xiaobai.klizi.cn/API/qqgn/friend_switch.php?uin=${Bot.uin}&skey=${ck.skey}&pskey=${ck.p_skey}&type=${/开启/.test(e.msg) ? 1 : 2}`
let res = await fetch(api).then(res => res.json()).catch(err => console.log(err))
let res = await QQInterface.addFriendSwitch(/开启/.test(e.msg) ? 1 : 2)
if (!res) return e.reply("接口失效辣(๑ŐдŐ)b")
e.reply(res.ActionStatus)
}
//好友申请方式
async friend_type(e) {
if (!e.isMaster) return
let regRet = friend_typeReg.exec(e.msg)
let ck = Cfg.getck("ti.qq.com")
if (regRet[1] == 0) return e.reply("1为允许所有人2为需要验证3为问答正确问答(需填参数question,answer)")
if (regRet[1] == 0) return e.reply("1为允许所有人2为需要验证3为问答正确问答(需填问题和答案,格式为:#更改好友申请方式3 问题 答案)")
//单独处理
let isproblem = '';
if (regRet[1] == 3) {
if (!regRet[3] && !regRet[4]) return e.reply("❎ 请正确输入问题和答案!")
isproblem = `&question=${regRet[3]}&answer=${regRet[4]}`
}
let api = `http://xiaobai.klizi.cn/API/qqgn/friend_type.php?uin=${Bot.uin}&skey=${ck.skey}&pskey=${ck.p_skey}&type=${regRet[1]}${isproblem}`
let res = await fetch(api).then(res => res.json()).catch(err => console.log(err))
if ((!regRet[3] || !regRet[4]) && regRet[1] == 3) return e.reply("❎ 请正确输入问题和答案!")
let res = await QQInterface.setFriendType(regRet[1], regRet[3], regRet[4])
if (!res) return e.reply("接口失效辣(๑ŐдŐ)b")
if (res.ec != 0) return e.reply("❎ 修改失败\n" + JSON.stringify(res))
e.reply(res.msg)
}
/**开关戳一戳 */
async cyc(e) {
if (!e.isMaster) return;
let result = await QQInterface.setcyc(/开启/.test(e.msg) ? 0 : 1)
if (!result) return e.reply("❎ 接口失效")
if (result.ret != 0) return e.reply("❎ 未知错误\n" + JSON.stringify(result))
e.reply(`✅ 已${/开启/.test(e.msg) ? '开启' : '关闭'}戳一戳功能`)
}
}

View File

@@ -51,15 +51,15 @@ export class Basics extends plugin {
},
{
reg: '^#发群公告.*$',
fnc: 'Announce'
fnc: 'AddAnnounce'
},
{
reg: '^#删群公告(\\d+)$',
fnc: 'DelAnnounce'
},
{
reg: '^#查群公告$',
fnc: 'DelAnnounce'
},
{
reg: '^#删群公告.*$',
fnc: 'DelAnnounce'
fnc: 'GetAnnounce'
},
{
reg: '^#修改头衔.*$',
@@ -129,6 +129,10 @@ export class Basics extends plugin {
reg: "^#?(谁|哪个吊毛|哪个屌毛|哪个叼毛)是龙王$",
fnc: 'dragonKing'
},
{
reg: '^#群星级$',
fnc: 'Group_xj'
},
]
})
@@ -416,72 +420,51 @@ export class Basics extends plugin {
}
//发群公告
async Announce(e) {
if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) {
return e.reply("❎ 该命令仅限管理员可用", true);
}
async AddAnnounce(e) {
//判断是否有管理
if (!e.group.is_admin && !e.group.is_owner) {
return e.reply("做不到,怎么想我都做不到吧ヽ(≧Д≦)", true);
}
//判断权限
if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) {
return e.reply("❎ 该命令仅限管理员可用", true);
}
//获取发送的内容
let msg = e.msg.replace(/#|发群公告/g, "").trim()
if (!msg) return e.reply("❎ 公告不能为空");
let ck = Cfg.getck("qun.qq.com")
let result = await QQInterface.setAnnounce(e.group_id, msg)
let url = `http://xiaobai.klizi.cn/API/qqgn/gg_send.php?data=&skey=${ck.skey}&pskey=${ck.p_skey}&uin=${Bot.uin}&group=${e.group_id}&text=${msg}`
let result = await fetch(url).then(res => res.json()).catch(err => console.log(err))
if (!result) return e.reply("❎ 接口出错")
if (result.ec == 0) {
e.reply("✅ 已发送群公告,群员们要好好看哦~")
} else {
e.reply("❎ 发送失败")
if (!result) return e.reply("❎ 出错辣,请稍后重试");
if (result.ec != 0) {
e.reply("❎ 发送失败\n" + JSON.stringify(result, null, '\t'))
}
return true;
}
//查群公告+删群公告
//查群公告
async GetAnnounce(e) {
if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) {
return e.reply("❎ 该命令仅限管理员可用", true);
}
let res = await QQInterface.getAnnouncelist(e.group_id)
if (!res) return e.reply("❎ 出错辣,请稍后重试");
return e.reply(res)
}
//删群公告
async DelAnnounce(e) {
if (!e.isMaster && !e.member.is_owner && !e.member.is_admin) {
return e.reply("❎ 该命令仅限管理员可用", true);
}
if (/查群公告/.test(e.msg)) {
let res = await Gpadmin.getAnnouncelist(e)
if (!res) return;
await e.reply(res)
return;
}
let msg = e.msg.replace(/#|删群公告/, "").trim()
if (!msg) return e.reply(`❎ 序号不可为空`)
msg = msg.match(/\d/)
let result = await QQInterface.delAnnounce(e.group_id, msg)
if (!result) return e.reply("❎ 出错辣,请稍后重试");
if (!msg) return e.reply(`❎ 请检查序号是否正确`)
let ck = Cfg.getck("qun.qq.com")
let list = await Gpadmin.getAnnouncelist(e, msg)
if (!list) return;
let url = `http://xiaobai.klizi.cn/API/qqgn/gg_delete.php?data=&skey=${ck.skey}&pskey=${ck.p_skey}&uin=${Bot.uin}&group=${e.group_id}&fid=${list.fid}`
let result = await fetch(url).then(res => res.json())
.catch(err => console.log(err))
if (!result) return e.reply("接口失效辣!!!")
if (result.ec == 0) {
e.reply("✅ 已删除这个公告哦~")
e.reply(`✅ 已删除${result.text}`)
} else {
e.reply("❎ 删除失败")
e.reply("❎ 删除失败\n" + JSON.stringify(result, null, '\t'))
}
}
@@ -768,4 +751,18 @@ export class Basics extends plugin {
`蝉联天数:${res.desc}`,
]);
}
/**群星级 */
async Group_xj(e) {
let result = await QQInterface.getCreditLevelInfo(e.group_id)
if (!result) return e.reply("❎ 接口失效")
if (result.ec != 0) return e.reply("❎ 查询错误\n" + JSON.stringify(result))
let { uiGroupLevel, group_name, group_uin } = result.info
let str = "⭐"
str = str.repeat(uiGroupLevel)
e.reply([
`群名:${group_name}\n`,
`群号:${group_uin}\n`,
`群星级:${str}`
])
}
}

View File

@@ -25,15 +25,15 @@ export class example extends plugin {
},
{
reg: rankingrReg,
fnc: 'PixivRanking'
fnc: 'pixivRanking'
},
{
reg: tagReg,
fnc: 'Tags'
fnc: 'saucenaoTags'
},
{
reg: '^#?(查看|获取)?热门(t|T)(a|A)(g|G)$',
fnc: 'trend_tags'
fnc: 'trendTags'
},
{
reg: uidReg,
@@ -41,15 +41,15 @@ export class example extends plugin {
},
{
reg: randomImgReg,
fnc: 'randomimg'
fnc: 'randomImg'
},
{
reg: relatedReg,
fnc: 'related_works'
fnc: 'relatedWorks'
},
{
reg: '^#?(P|p)ximg(pro)?$',
fnc: 'Pximg'
fnc: 'pximg'
},
]
})
@@ -79,7 +79,7 @@ export class example extends plugin {
}
//p站排行榜
async PixivRanking(e) {
async pixivRanking(e) {
let regRet = rankingrReg.exec(e.msg)
if (!e.isMaster) {
if (!Config.getGroup(e.group_id).sese || regRet[4] && !await setu.getr18(e)) return e.reply("主人没有开放这个功能哦(*/ω\*)")
@@ -104,7 +104,7 @@ export class example extends plugin {
}
/**关键词搜图 */
async Tags(e) {
async saucenaoTags(e) {
let regRet = tagReg.exec(e.msg)
if (!e.isMaster) {
@@ -138,7 +138,7 @@ export class example extends plugin {
return true;
}
/**获取热门tag */
async trend_tags(e) {
async trendTags(e) {
if (!e.isMaster) {
if (!Config.getGroup(e.group_id).sese) return e.reply("主人没有开放这个功能哦(*/ω\*)")
}
@@ -182,7 +182,7 @@ export class example extends plugin {
}
//随机原创插画
async randomimg(e) {
async randomImg(e) {
if (!e.isMaster) {
if (!Config.getGroup(e.group_id).sese) return e.reply("主人没有开放这个功能哦(*/ω\*)")
}
@@ -204,7 +204,7 @@ export class example extends plugin {
}
//相关作品
async related_works(e) {
async relatedWorks(e) {
if (!e.isMaster) {
if (!Config.getGroup(e.group_id).sese) return e.reply("主人没有开放这个功能哦(*/ω\*)")
}
@@ -216,7 +216,7 @@ export class example extends plugin {
}
//p站单图
async Pximg(e) {
async pximg(e) {
let pro = /pro/.test(e.msg)
if (!e.isMaster) {
if (!Config.getGroup(e.group_id).sese || !Config.getGroup(e.group_id).sesepro && pro) {

View File

@@ -8,27 +8,7 @@ class Group_admin {
constructor() {
this.ck = Cfg.getck("qun.qq.com");
}
/**
* @description: 获取群公告
* @param {String} group 群号
* @param {String} item 序号
* @return {Object}
*/
async getAnnouncelist(e, item = "") {
let ck = this.ck
let url = `http://xiaobai.klizi.cn/API/qqgn/qun_gg.php?data=&skey=${ck.skey}&pskey=${ck.p_skey}&uin=${Bot.uin}&group=${e.group_id}&n=${item}`
let result = await fetch(url).then(res => res.text()).catch(err => console.log(err))
if (!result) return false
if (item) {
return JSON.parse(result)
} else {
return result
}
}
/**
* @description: 幸运字符抽取和列表
* @param {*} e oicq

View File

@@ -94,22 +94,15 @@ export default new class assistant {
}
/**群星级 */
async getGroup_xj(e) {
let ck = Cfg.getck("qqweb.qq.com")
let url = `http://xiaobai.klizi.cn/API/qqgn/qun_xj.php?data=&uin=${Bot.uin}&skey=${ck.skey}&pskey=${ck.p_skey}&group=${e.group_id}`
let result = await fetch(url).then(res => res.json()).catch(err => console.log(err))
if (!result) return e.reply("❎ 接口失效")
let str = "⭐"
str = str.repeat(result.uiGroupLevel)
e.reply([
`群名:${result.group_name}\n`,
`群号:${result.group_uin}\n`,
`群星级:${str}`
])
async getCreditLevelInfo(group_id) {
let url = `https://qqweb.qq.com/c/activedata/get_credit_level_info?bkn=${Bot.bkn}&uin=${Bot.uin}&gc=${group_id}`
return await fetch(url, {
headers: {
"Cookie": Bot.cookies["qqweb.qq.com"],
"Referer": `https://qqweb.qq.com/m/business/qunlevel/index.html?gc=${group_id}&from=0&_wv=1027`,
"User-agent": "Mozilla/5.0 (Linux; Android 12; M2012K11AC Build/SKQ1.220303.001; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/89.0.4389.72 MQQBrowser/6.2 TBS/046141 Mobile Safari/537.36 V1_AND_SQ_8.3.9_350_TIM_D QQ/3.5.0.3148 NetType/WIFI WebP/0.3.0 Pixel/1080 StatusBarHeight/81 SimpleUISwitch/0 QQTheme/1015712"
}
}).then(res => res.json()).catch(err => console.error(err))
}
/**查看本群龙王 */
@@ -125,4 +118,140 @@ export default new class assistant {
desc
}
}
/**
* @description: 获取群公告
* @param {String} group 群号
* @param {String} item 序号
* @return {Object}
*/
async getAnnouncelist(group_id, s = 0) {
let n = s ? 1 : 20;
let url = `https://web.qun.qq.com/cgi-bin/announce/get_t_list?bkn=${Bot.bkn}&qid=${group_id}&ft=23&s=${s - 1}&n=${n}`
let res = await fetch(url, { headers: { "Cookie": Bot.cookies["qun.qq.com"], } }).then(res => res.json()).catch(err => console.error(err))
if (!res) return false;
if (s) {
return {
text: res.feeds[0].msg.text,
fid: res.feeds[0].fid
}
} else {
return res.feeds.map((item, index) => `${index + 1}${lodash.truncate(item.msg.text)}`).join('\n')
}
}
/**
* @description: 发送群公告
* @param {Number} group_id 发送群号
* @param {String} msg 发送内容
*/
async setAnnounce(group_id, msg) {
let url = `https://web.qun.qq.com/cgi-bin/announce/add_qun_notice?bkn=${Bot.bkn}`
return await fetch(url, {
method: 'POST',
body: `qid=${group_id}&bkn=${Bot.bkn}&text=${msg}&pinned=0&type=1&settings={"is_show_edit_card":1,"tip_window_type":1,"confirm_required":1}`,
headers: {
"Cookie": Bot.cookies["qun.qq.com"],
}
}).then(res => res.json()).catch(err => console.error(err))
}
/**
* @description: 删群公告
* @param {Number} group_id 群号
* @param {Number} num 序号
*/
async delAnnounce(group_id, num) {
let fid = await this.getAnnouncelist(group_id, num)
if (!fid) return false;
let url = `https://web.qun.qq.com/cgi-bin/announce/del_feed?bkn=${Bot.bkn}`
let res = await fetch(url, {
method: 'POST',
body: `bkn=${Bot.bkn}&fid=${fid.fid}&qid=${group_id}`,
headers: {
"Cookie": Bot.cookies["qun.qq.com"],
}
}).then(res => res.json()).catch(err => console.error(err))
return {
...res,
text: lodash.truncate(fid.text)
}
}
/**
* @description: 开关好友添加
* @param {Number} type 1关闭2开启
*/
async addFriendSwitch(type) {
let url = `https://ti.qq.com/proxy/domain/oidb.tim.qq.com/v3/oidbinterface/oidb_0x587_75?sdkappid=39998&actype=2&bkn=${Bot.bkn}`
return await fetch(url, {
method: "POST",
body: JSON.stringify({
"uint32_allow": type
}),
headers: {
"Cookie": Bot.cookies["ti.qq.com"],
"Content-type": "application/json",
}
}).then(res => res.json()).catch(err => console.error(err))
}
/**
* @description: 更改好友申请方式
* @param {*} at 类型1
* @param {*} q
* @param {*} a
* @return {*}
*/
async setFriendType(at, q = "", a = "") {
const type = {
'1': '0',
'2': '1',
'3': '3'
}
let url = `https://ti.qq.com/cgi-node/friend-auth/set`
return await fetch(url, {
method: "POST",
body: JSON.stringify({
"req": `{"at": ${type[at]},"q": "${q}","a": "${a}","l": [],"viaphone": 0}`
}),
headers: {
"Cookie": Bot.cookies["ti.qq.com"],
"Content-type": "application/json",
}
}).then(res => res.json()).catch(err => console.error(err))
}
/**
* @description: 设置戳一戳开关
* @param {Number} is 0为开启1为关闭
*/
async setcyc(is) {
let url = `https://zb.vip.qq.com/srf/QC_UniBusinessLogicServer_UniBusinessLogicObj/uniSet?g_tk=${Bot.bkn}`
return await fetch(url, {
method: "POST",
body: JSON.stringify({
"stLogin": {
"iKeyType": 1,
"iOpplat": 2,
"lUin": Bot.uin,
"sClientIp": "",
"sClientVer": "8.9.10",
"sSKey": "MGOy0oTuvl"
},
"stUniBusinessItem": {
"appid": 46,
"itemid": 1
},
"stNudge": {
"ischangeswitch": 1,
"isclose": is,
"ischangecustomtext": 1,
"customtext": ""
}
}
),
headers: {
"Cookie": Bot.cookies["vip.qq.com"],
"Content-type": "application/json",
}
}).then(res => res.json()).catch(err => console.error(err))
}
}