feat: 发布随机动态

This commit is contained in:
shanmite 2021-02-21 12:13:18 +08:00
parent f7bd1aea15
commit 9021374f60
4 changed files with 82 additions and 7 deletions

View File

@ -57,6 +57,23 @@ const Base = {
}, time);
});
},
/**
* 计数器 0..Infinity
* @typedef Counter
* @property {()=>Number} next
* @property {()=>boolean} clear
* @property {()=>Number} value
* @returns {Counter}
*/
counter() {
let c = {
i: 0,
next: () => c.i++,
clear: () => { c.i = 0 },
value: () => c.i
}
return c
},
/**
* 随机获取字符串数组中的字符串
* @param {string[]} arr
@ -65,6 +82,36 @@ const Base = {
getRandomStr: arr => {
return arr[parseInt(Math.random() * arr.length)];
},
/**
* 一言接口
* @returns {Promise<string>}
*/
getHiToKoTo() {
return new Promise(resolve => {
HttpRequest({
method: 'GET',
url: 'https://v1.hitokoto.cn/',
query: {
encode: 'text',
c: 'i'
},
headers: {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/83.0.4103.116 Safari/537.36',
Accept: 'text/plain, */*',
},
success: res => {
if (Date.now() % 7) {
resolve(res.body)
} else {
resolve('发条动态证明自己是真人[doge][doge][doge]')
}
},
error: () => {
resolve('发条动态证明自己是真人[doge][doge][doge]')
}
})
});
},
/**
* 提取开奖信息
* @param {string} des 描述

View File

@ -481,6 +481,30 @@ const BiliAPI = {
});
});
},
/**
* 发布一条无图的动态
* @param {string} content
*/
createDynamic: content => {
Ajax.post({
url: 'https://api.vc.bilibili.com/dynamic_svr/v1/dynamic_svr/create',
hasCookies: true,
dataType: 'application/x-www-form-urlencoded',
data: {
content,
type: 4,
extension: '{"emoji_type":1,"from":{"emoji_type":1},"flag_cfg":{}}',
csrf: GlobalVar.csrf
},
success: responseText => {
if (/^{"code":0/.test(responseText)) {
console.log('[发布动态]成功创建一条随机内容的动态');
} else {
console.warn(`[发布动态]发布动态失败\n${responseText}`);
}
}
})
},
/**
* 移除动态
* @param {string} dyid

View File

@ -10,7 +10,7 @@ const default_config = {
minfollower: '1000',
/* 与最新黑名单同步 */
blacklist: '28008897,28272016,140389827,24598781,28008860,28008880,28008743,28008948,28009292,319696958,90138218,28272000,28272047,28271978,8831288,175979009,3177443,486780865,403048135,474325039,455274996,477519424,292671666,448873224,22498938,1770865,444796995,306112375,320193786,606637517,305276429,204487541,404761800,186914127,99439379,457697569,270886929,477519424,401575,201296348,206804212,333584926,34679178,699923691,392689522,178700744,272882445,350977368,487168411,22682842,444949061,523974463,192231907,503908324,383189098,252909207,336467750,264875137,90721742,452299642,677739290,441522918,8766623,698327474,5439672,483247863,237055308,95404163,202052696,1309889741,627942060,455030741,406353670,18036870,470220612',
blockword: ["脚本抽奖", "恭喜", "结果"],
blockword: ["脚本抽奖", "恭喜", "结果", "抽奖号"],
followWhiteList: '',
relay: ['转发动态'],
chat: [

View File

@ -60,17 +60,21 @@ const pushplus = (text, desp) => {
* @param {string} cookie
*/
function start() {
let i = 0;
let times = Base.counter();
/* 注册事件 */
eventBus.on('Turn_on_the_Monitor', () => {
if (i === GlobalVar.Lottery.length) {
if (times.value() === GlobalVar.Lottery.length) {
console.log('所有动态转发完毕');
console.log('[运行结束]目前无抽奖信息,过一会儿再来看看吧');
i = 0;
times.clear();
Base.getHiToKoTo().then(sentence => {
BiliAPI.createDynamic(sentence);
})
return;
}
(new Monitor(GlobalVar.Lottery[i++])).init();
const lottery = GlobalVar.Lottery[times.next()];
const nlottery = Number(lottery);
(new Monitor(isNaN(nlottery) ? lottery : nlottery)).init();
});
eventBus.emit('Turn_on_the_Monitor');
}
@ -109,7 +113,7 @@ async function isMe() {
if (/恭喜|中奖|地址|支付宝|账号|收款码/.test(content)) {
desp += `发生时间: ${transformTimeZone(timestamp * 1000, 8)} <br><br>`
desp += `用户: ${sender_uid} <br><br>`
desp += `私信你说: ${content} <br><br>`
desp += `私信你(${GlobalVar.myUID})说: ${content} <br><br>`
desp += `[直达链接](https://message.bilibili.com/#/whisper/mid${sender_uid})`
desp += `--------------------- <br><br>`
}