MCPcopy Create free account
hub / github.com/NobyDa/Script / BahamutGuildSign

Function BahamutGuildSign

Bahamut/BahamutDailyBonus.js:194–226  ·  view source on GitHub ↗
()

Source from the content-addressed store, hash-verified

192}
193
194function BahamutGuildSign() { //巴哈姆特查询公会列表
195 if ($.needSignGuild === false || $.needSignGuild === 'false') { //如果用户选择不签到公会
196 return; //退出公会签到函数
197 }
198 return $.http.get({ //使用get请求查询公会列表 (Promise实例对象)
199 url: 'https://api.gamer.com.tw/ajax/common/topBar.php?type=forum', // 查询公会列表接口
200 headers: {} //请求头, 客户端将自动设置Cookie字段
201 })
202 .then(async (resp) => { //网络请求成功的处理, 实例函数带有async关键字, 表示里面有异步操作
203 const list = (resp.body.replace(/\n/g, '').match(/guild\.php\?g?sn=\d.+?<\/p>/g) || []) //正则过滤公会列表大致内容
204 .map(n => { //使用map遍历每个大致内容
205 return { //返回包含公会ID和公会名称的对象
206 sn: n.split(/guild\.php\?g?sn=(\d+)/)[1], //正则进一步提取公会ID
207 name: n.split(/<p>(.+?)<\/p>/)[1] //正则进一步提取公会名称
208 }
209 });
210 if (list.length) { //过滤后, 如果包含公会列表
211 $.log('', `✅获取公会列表成功`); //打印日志
212 //按照公会数量进行并发签到, map结合Promise.all后可以实现并发签到并且都完成后才进行下一行操作
213 const sign = await Promise.all(list.map(StartSignGuild));
214 const sucs = sign.filter(n => n === 1).length; //过滤后得到成功数量
215 const fail = sign.filter(n => n === 0).length; //过滤后得到失败数量
216 //添加到全局变量备用 (通知)
217 $.notifyMsg.push(`公会签到: ${sucs?`成功${sucs}个`:``}${sucs&&fail?`, `:``}${fail?`失败${fail}个`:``}`);
218 } else {
219 throw new Error('公会列表为空'); //无公会列表则抛出异常
220 }
221 })
222 .catch(err => { //捕获异常, 打印日志
223 $.notifyMsg.push(`公会签到: ${err.message || err}`); //添加到全局变量备用 (通知)
224 $.log('', `❌巴哈姆特公会签到失败`, `❌${err.message || err}`); //打印日志
225 });
226}
227
228function StartSignGuild(v) { //巴哈姆特公会签到
229

Callers 1

Calls 2

getMethod · 0.45
logMethod · 0.45

Tested by

no test coverage detected