Merge branch 'master' into fix/smol-fixes
This commit is contained in:
commit
daed19cd5e
2 changed files with 52 additions and 28 deletions
|
@ -2,9 +2,10 @@
|
|||
"Username": "",
|
||||
"Password": "",
|
||||
"PNSLToken": "",
|
||||
"IgnorePNSL": false,
|
||||
"Users": [],
|
||||
"Prefix": "!!",
|
||||
"MaxConnections": 30,
|
||||
"MaxChunkSize": 2000,
|
||||
"DelayPerChunk": 30e3
|
||||
}
|
||||
}
|
||||
|
|
77
index.js
77
index.js
|
@ -19,6 +19,8 @@ const pnslClient = createGotClient({
|
|||
},
|
||||
});
|
||||
|
||||
const urlClient = createGotClient();
|
||||
|
||||
const fetchList = async (list) => {
|
||||
const listID = uuidRegex.exec(list)?.[0];
|
||||
if (!listID) {
|
||||
|
@ -44,6 +46,19 @@ const fetchList = async (list) => {
|
|||
return {listMeta, listData};
|
||||
};
|
||||
|
||||
const fetchUrlList = async (list) => {
|
||||
const {body: listMetaBody, statusCode} = await urlClient(list);
|
||||
if (statusCode === 404) {
|
||||
throw new Error('List was not found.');
|
||||
}
|
||||
|
||||
if (statusCode !== 200) {
|
||||
throw new Error('Unexpected error occured!');
|
||||
}
|
||||
|
||||
return listMetaBody;
|
||||
};
|
||||
|
||||
const runList = async (listData, listID, channel) => {
|
||||
const banArr = listData.split('\n');
|
||||
|
||||
|
@ -108,33 +123,35 @@ const say = (channel, message) => {
|
|||
getConnection().say(channel, message);
|
||||
};
|
||||
|
||||
const pnslWebSocket = new WS('wss://bot.tetyys.com/api/wss', [], {headers: {Authorization: `Bearer ${Config.PNSLToken}`}});
|
||||
if (!Config.IgnorePNSL){
|
||||
const pnslWebSocket = new WS('wss://bot.tetyys.com/api/wss', [], {headers: {Authorization: `Bearer ${Config.PNSLToken}`}});
|
||||
|
||||
pnslWebSocket.on('open', () => {
|
||||
console.log(`${chalk.green('[P&SL]')} || Connected to P&SL Websocket server`);
|
||||
});
|
||||
pnslWebSocket.on('open', () => {
|
||||
console.log(`${chalk.green('[P&SL]')} || Connected to P&SL Websocket server`);
|
||||
});
|
||||
|
||||
pnslWebSocket.on('message', async (data) => {
|
||||
const {o: type, p: payload} = JSON.parse(data);
|
||||
switch (type) {
|
||||
case 0: {
|
||||
const {listMeta} = await fetchList(payload.LatestBotList);
|
||||
console.log(`${chalk.green('[P&SL]')} || Latest Botlist: ${payload.LatestBotList} [${listMeta.name}] (${listMeta.count})`);
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
console.log(`${chalk.green('[P&SL]')} || New Botlist: ${payload.Guid} [${payload.Name}] (${payload.Count}) (${payload.Tags.join(' ')})`);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
console.log(`${chalk.green('[P&SL]')} || New False Positive: ${payload.UserTwitchId} [${payload.BotListGuid}]`);
|
||||
break;
|
||||
}
|
||||
pnslWebSocket.on('message', async (data) => {
|
||||
const {o: type, p: payload} = JSON.parse(data);
|
||||
switch (type) {
|
||||
case 0: {
|
||||
const {listMeta} = await fetchList(payload.LatestBotList);
|
||||
console.log(`${chalk.green('[P&SL]')} || Latest Botlist: ${payload.LatestBotList} [${listMeta.name}] (${listMeta.count})`);
|
||||
break;
|
||||
}
|
||||
case 1: {
|
||||
console.log(`${chalk.green('[P&SL]')} || New Botlist: ${payload.Guid} [${payload.Name}] (${payload.Count}) (${payload.Tags.join(' ')})`);
|
||||
break;
|
||||
}
|
||||
case 2: {
|
||||
console.log(`${chalk.green('[P&SL]')} || New False Positive: ${payload.UserTwitchId} [${payload.BotListGuid}]`);
|
||||
break;
|
||||
}
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
default:
|
||||
break;
|
||||
}
|
||||
});
|
||||
}
|
||||
|
||||
(async () => {
|
||||
await Promise.all([...Array(Config.MaxConnections)].map(async (_, i) => {
|
||||
|
@ -195,8 +212,14 @@ pnslWebSocket.on('message', async (data) => {
|
|||
const mods = await getConnection().getMods(channel);
|
||||
if (!mods.includes(Config.Username)) return say(Config.Username, `I am not a moderator in channel ${channel}!`);
|
||||
}
|
||||
const data = await fetchList(listID);
|
||||
await runList(data.listData, listID, channel || channelName);
|
||||
if (!Config.IgnorePNSL) {
|
||||
const data = await fetchList(listID);
|
||||
await runList(data.listData, listID, channel || channelName);
|
||||
}
|
||||
else {
|
||||
const data = await fetchUrlList(listID);
|
||||
await runList(data, listID, channel || channelName);
|
||||
}
|
||||
say(Config.Username, `List ${listID} executed successfully on channel ${channel || channelName}`);
|
||||
} catch (error) {
|
||||
console.error(error);
|
||||
|
@ -220,4 +243,4 @@ process
|
|||
.on('uncaughtException', (err) => {
|
||||
console.error(`${chalk.red('[UncaughtException]')} || ${err.message}`);
|
||||
process.exit(0);
|
||||
});
|
||||
});
|
||||
|
|
Loading…
Reference in a new issue