diff --git a/model/api/QQApi.js b/model/api/QQApi.js index 2b1ffb4..f072107 100644 --- a/model/api/QQApi.js +++ b/model/api/QQApi.js @@ -420,51 +420,6 @@ export default class { }).then(res => res.json()).catch(err => logger.error(err)) } - /** - * @description: 陌生人点赞 - * @param {Number} uid QQ号 - * @param {Number} times 数量 - * @return {Object} - */ - async thumbUp (uid, times = 1) { try { - let core = this.Bot.icqq?.core - if (!core) core = (await import('icqq')).core - if (times > 20) { times = 20 } - let ReqFavorite - if (this.Bot.fl.get(uid)) { - ReqFavorite = core.jce.encodeStruct([ - core.jce.encodeNested([ - this.Bot.uin, 1, this.Bot.sig.seq + 1, 1, 0, Buffer.from('0C180001060131160131', 'hex') - ]), - uid, 0, 1, Number(times) - ]) - } else { - ReqFavorite = core.jce.encodeStruct([ - core.jce.encodeNested([ - this.Bot.uin, 1, this.Bot.sig.seq + 1, 1, 0, Buffer.from('0C180001060131160135', 'hex') - ]), - uid, 0, 5, Number(times) - ]) - } - const body = core.jce.encodeWrapper({ ReqFavorite }, 'VisitorSvc', 'ReqFavorite', this.Bot.sig.seq + 1) - const payload = await this.Bot.sendUni('VisitorSvc.ReqFavorite', body) - let result = core.jce.decodeWrapper(payload)[0] - return { code: result[3], msg: result[4] } - } catch (error) { - return this._thumbUp(uid, times) - }} - - async _thumbUp (uid, times) { - const friend = this.Bot.pickFriend(uid) - if (!friend?.thumbUp) throw Error('当前协议端不支持点赞,详情查看\nhttps://gitee.com/TimeRainStarSky/Yunzai') - const res = { ...await friend.thumbUp(times) } - if (res.retcode && !res.code) - res.code = res.retcode - if (res.message && !res.msg) - res.msg = res.message - return res - } - /** * @description: 批量踢人 * @param {Array} member 要踢的人的数组 diff --git a/model/api/funApi/thumbUp.js b/model/api/funApi/thumbUp.js index b653ead..e5d77da 100644 --- a/model/api/funApi/thumbUp.js +++ b/model/api/funApi/thumbUp.js @@ -1,116 +1,119 @@ import _ from 'lodash' -import { QQApi, memes, common } from '../../index.js' +import { memes, common } from '../../index.js' import { Config } from '../../../components/index.js' import { successImgs, faildsImgs } from '../../../constants/fun.js' export default async function thumbUp (e) { let _do = '赞' + let userId = e.user_id + let isSelf = true if (e.msg.includes('超', '操', '草', '抄', '吵', '炒')) { _do = '超' } - /** 判断是赞自己还是赞别人 */ if (e.at && e.msg.includes('他', '她', '它', 'TA', 'ta', 'Ta')) { - /** 判断是否为好友 */ - let isFriend = await (e.bot ?? Bot).fl.get(e.at) - let allowLikeByStrangers = Config.whole.Strangers_love - if (!isFriend && !allowLikeByStrangers) return e.reply(`不加好友不${_do}🙄`, true) - /** 执行点赞 */ - let n = 0 - let failsMsg = `今天已经${_do}过了,还搁这讨${_do}呢!!!` - for (let i = 0; i < 10; i++) { - let res = null - try { - res = await new QQApi(e).thumbUp(e.at, 10) - } catch (error) { - logger.error(error) - return common.handleException(e, error) - } - logger.debug(`${e.logFnc}给${e.at}点赞`, res) - if (res.code) { - if (res.code == 1) { - failsMsg = `${_do}失败,请检查是否开启陌生人点赞或添加好友` - } else { - if (_do == '超') { - failsMsg = res.msg.replace(/点赞/g, '超').replace('给', '超').replace('点', '').replace('个赞', '下') - } else { - failsMsg = res.msg - } - } - break - } else { - n += 10 - } + userId = e.at + isSelf = false + } + /** 判断是否为好友 */ + let isFriend = await (e.bot ?? Bot).fl.get(userId) + let allowLikeByStrangers = Config.whole.Strangers_love + if (!isFriend && !allowLikeByStrangers) return e.reply(`不加好友不${_do}🙄`, true) + /** 执行点赞 */ + let n = 0 + let failsMsg = `今天已经${_do}过了,还搁这讨${_do}呢!!!` + for (let i = 0; i < 10; i++) { + let res = null + try { + res = await new ThumbUpApi(e).thumbUp(userId, 10) + } catch (error) { + logger.error(error) + return common.handleException(e, error) } - let successMsg = `给${e.at}${_do}了${n}下哦,记得回我~ ${isFriend ? '' : `(如${_do}失败请添加好友)`}` - const avatar = `https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.at}` - const successFn = _.sample(['ganyu', 'zan']) + logger.debug(`${e.logFnc}给${userId}点赞`, res) + if (res.code) { + if (res.code == 1) { + failsMsg = `${_do}失败,请检查是否开启陌生人点赞或添加好友` + } else { + if (_do == '超') { + failsMsg = res.msg.replace(/点赞/g, '超').replace('给', '超').replace('点', '').replace('个赞', '下') + } else { + failsMsg = res.msg + } + } + break + } else { + n += 10 + } + } + let successMsg = `给${isSelf ? '你' : userId}${_do}了${n}下哦,记得回我~ ${isFriend ? '' : `(如${_do}失败请添加好友)`}` + const avatar = `https://q1.qlogo.cn/g?b=qq&s=100&nk=${userId}` + const successFn = _.sample(['ganyu', 'zan']) - /** 判断点赞是否成功 */ - let msg = n > 0 - ? [ + /** 判断点赞是否成功 */ + let msg = n > 0 + ? [ `\n${successMsg}`, segment.image((await memes[successFn](avatar)) || - _.sample(successImgs) + e.user_id) - ] - : [ + _.sample(successImgs) + userId) + ] + : [ `\n${failsMsg}`, segment.image((await memes.crawl(avatar)) || - _.sample(faildsImgs) + e.user_id) - ] + _.sample(faildsImgs) + userId) + ] - /** 回复 */ - e.reply(msg, true, { at: e.at }) - } else if (!e.msg.includes('他', '她', '它', 'TA', 'ta', 'Ta')) { - /** 判断是否为好友 */ - let isFriend = await (e.bot ?? Bot).fl.get(e.user_id) - let allowLikeByStrangers = Config.whole.Strangers_love - if (!isFriend && !allowLikeByStrangers) return e.reply(`不加好友不${_do}🙄`, true) + /** 回复 */ + e.reply(msg, true, { at: userId }) +} - /** 执行点赞 */ - let n = 0 - let failsMsg = `今天已经${_do}过了,还搁这讨${_do}呢!!!` - for (let i = 0; i < 10; i++) { - let res = null - try { - res = await new QQApi(e).thumbUp(e.user_id, 10) - } catch (error) { - logger.error(error) - return common.handleException(e, error) - } - logger.debug(`${e.logFnc}给${e.user_id}点赞`, res) - if (res.code) { - if (res.code == 1) { - failsMsg = `${_do}失败,请检查是否开启陌生人点赞或添加好友` - } else { - if (_do == '超') { - failsMsg = res.msg.replace(/点赞/g, '超').replace('给', '超').replace('点', '').replace('个赞', '下') - } else { - failsMsg = res.msg - } - } - break +class ThumbUpApi { + constructor (e) { + this.e = e + this.Bot = e.bot ?? Bot + } + + /** + * @description: 陌生人点赞 + * @param {Number} uid QQ号 + * @param {Number} times 数量 + * @return {Object} + */ + async thumbUp (uid, times = 1) { + try { + let core = this.Bot.icqq?.core + if (!core) core = (await import('icqq')).core + if (times > 20) { times = 20 } + let ReqFavorite + if (this.Bot.fl.get(uid)) { + ReqFavorite = core.jce.encodeStruct([ + core.jce.encodeNested([ + this.Bot.uin, 1, this.Bot.sig.seq + 1, 1, 0, Buffer.from('0C180001060131160131', 'hex') + ]), + uid, 0, 1, Number(times) + ]) } else { - n += 10 + ReqFavorite = core.jce.encodeStruct([ + core.jce.encodeNested([ + this.Bot.uin, 1, this.Bot.sig.seq + 1, 1, 0, Buffer.from('0C180001060131160135', 'hex') + ]), + uid, 0, 5, Number(times) + ]) } + const body = core.jce.encodeWrapper({ ReqFavorite }, 'VisitorSvc', 'ReqFavorite', this.Bot.sig.seq + 1) + const payload = await this.Bot.sendUni('VisitorSvc.ReqFavorite', body) + let result = core.jce.decodeWrapper(payload)[0] + return { code: result[3], msg: result[4] } + } catch (error) { + return this.origThumbUp(uid, times) } - let successMsg = `给你${_do}了${n}下哦,记得回我~ ${isFriend ? '' : `(如${_do}失败请添加好友)`}` - const avatar = `https://q1.qlogo.cn/g?b=qq&s=100&nk=${e.user_id}` - const successFn = _.sample(['ganyu', 'zan']) + } - /** 判断点赞是否成功 */ - let msg = n > 0 - ? [ - `\n${successMsg}`, - segment.image((await memes[successFn](avatar)) || - _.sample(successImgs) + e.user_id) - ] - : [ - `\n${failsMsg}`, - segment.image((await memes.crawl(avatar)) || - _.sample(faildsImgs) + e.user_id) - ] - - /** 回复 */ - e.reply(msg, true, { at: true }) + async origThumbUp (uid, times) { + const friend = this.Bot.pickFriend(uid) + if (!friend?.thumbUp) throw Error('当前协议端不支持点赞,详情查看\nhttps://gitee.com/TimeRainStarSky/Yunzai') + const res = { ...await friend.thumbUp(times) } + if (res.retcode && !res.code) { res.code = res.retcode } + if (res.message && !res.msg) { res.msg = res.message } + return res } }