|
import {common} from '../model/index.js' |
|
import fetch from "node-fetch"; |
|
import plugin from '../../../lib/plugins/plugin.js' |
|
|
|
const apis = [ |
|
'https://img.xjh.me/random_img.php', |
|
'https://www.dmoe.cc/random.php?return=json', |
|
'https://api.vvhan.com/api/acgimg?type=json', |
|
'https://www.dmoe.cc/random.php?return=json', |
|
'http://api.caonm.net/api/dm/index.php?return=json', |
|
'https://api.ghser.com/random/api.php?return=json', |
|
'https://api.yfzy.top/laifentu.php?return=json', |
|
'https://api.yimian.xyz/img', |
|
'https://api.yfzy.top/laifentu.php', |
|
'https://api.dujin.org/pic/yuanshen?return=json', |
|
] |
|
|
|
let useapi = apis |
|
|
|
export class xy_sjt extends plugin { |
|
constructor() { |
|
super({ |
|
name: '随机图', |
|
dsc: '二次元图', |
|
event: 'message', |
|
priority: 8888, |
|
rule: [{ |
|
reg: '^#?来(点|份)(二次元|随机图)(\\d+张)?$', |
|
fnc: 'txsjt' |
|
}] |
|
}) |
|
|
|
} |
|
|
|
async txsjt(e) { |
|
let image = [] |
|
let res = [] |
|
let img |
|
let number = e.msg.match(/\d+/) |
|
if (number) { |
|
number = Number(number[0]) |
|
number = number < 2 ? 2 : number > 10 ? 10 : number |
|
} else { |
|
number = 1 |
|
} |
|
for (let i = 0; i < number; i++) { |
|
let flag = 1 |
|
img = await getImg(e) |
|
if (!img.includes('http')) { |
|
img = 'https:' + img |
|
} |
|
|
|
if (i == 0) { |
|
res.push(img) |
|
image.push(segment.image(img)) |
|
} else { |
|
for (let val of res) { |
|
if (val == img) { |
|
flag = 0 |
|
} |
|
} |
|
if (flag == 1) { |
|
image.push(segment.image(img)) |
|
} else { |
|
number++ |
|
} |
|
} |
|
|
|
} |
|
|
|
if(e.isGroup) { |
|
number > 1 ? common.getforwardMsg(e, image, '点击显示随机涩图', 0, false, true) : e.reply(image) |
|
}else{ |
|
for (let i = 0; i < image.length; i++){ |
|
e.reply(image[i]) |
|
} |
|
} |
|
} |
|
} |
|
|
|
async function getImg(e) { |
|
let res = await response() |
|
let i = 0 |
|
while (!res && i < apis.length) { |
|
res = await response() |
|
i++ |
|
} |
|
if (i > apis.length) return e.reply('接口失效') |
|
let img = res.img || res.imgurl || res.pic?.[0] || res |
|
return img |
|
} |
|
|
|
|
|
async function response() { |
|
let num = Math.round(Math.random() * (useapi.length - 1)) |
|
logger.warn(`尝试请求接口:${useapi[num]}`) |
|
try { |
|
let res = await fetch(useapi[num]) |
|
if (!res.ok) { |
|
logger.warn(useapi[num] + ',接口失效') |
|
useapi.splice(num, 1) |
|
return false |
|
} |
|
if (res.headers.get('content-type').includes('json')) { |
|
res = await res.json() |
|
return res |
|
} |
|
return useapi[num] |
|
} catch (err) { |
|
logger.warn(useapi[num] + ',接口失效') |
|
useapi.splice(num, 1) |
|
return false |
|
} |
|
} |