mercury/bot.js
2023-10-02 02:11:25 +00:00

90 lines
2.8 KiB
JavaScript

var config = require('./config/default.json');
var irc = require("irc");
var fs = require("fs");
var readline = require('readline');
const { Worker } = require('worker_threads');
//var randomWords = require('better-random-words');
var bot = new irc.Client(config.irc.server, config.irc.nickname, {
channels: config.irc.channels,
secure: config.irc.ssl,
port: config.irc.port,
autoRejoin: config.irc.autorejoin,
userName: config.irc.username,
realName: config.irc.realname,
floodProtection: config.irc.floodprotection,
floodProtectionDelay: config.irc.floodprotectiondelay
});
const timer = ms => new Promise(res => setTimeout(res, ms))
async function help(chan, sub) {
if (sub === undefined) {
var sub = "default"
}
if (sub === "default") {
bot.say(chan, ' ____ ___ ___ ____________ _________ __')
bot.say(chan, ' / __ `__ \\/ _ \\/ ___/ ___/ / / / ___/ / / /')
bot.say(chan, ' / / / / / / __/ / / /__/ /_/ / / / /_/ / ')
bot.say(chan, '/_/ /_/ /_/\\___/_/ \\___/\\__,_/_/ \\__, / ')
bot.say(chan, ' /____/ ')
bot.say(chan, 'Mercury - https://git.supernets.org/hogwart7/mercury')
bot.say(chan, 'm!feed [FEED] [ENTRIES] - Return the last x amount of entries from any RSS feed')
bot.say(chan, "m!twitter [USER] [ENTRIES] - Return the last x amount of tweets from a particular user")
}
}
async function feed(chan, provfeed, n) {
if (provfeed === undefined) {
bot.say(chan, "No feed has been provided.")
}
if (n === undefined) {
var n = 5;
}
const worker = new Worker('./commands/feed.js', {
workerData: {
provfeed,
n
}
});
worker.once('message', (string) => {
console.log('Received output from last5 worker, posting.');
bot.say(chan, string);
});
}
async function twitter(chan, provfeed, n) {
if (provfeed === undefined) {
bot.say(chan, "No account has been provided.")
}
if (n === undefined) {
var n = 5;
}
const worker = new Worker('./commands/twitter.js', {
workerData: {
provfeed,
n
}
});
worker.once('message', (string) => {
console.log('Received output from twitter worker, posting.');
bot.say(chan, string);
});
}
bot.addListener('message', function(nick, to, text, from) {
var args = text.split(' ');
if (args[0] === 'm!help') {
help(to, args[1]);
} else if (args[0] === 'm!feed') {
feed(to, args[1], args[2]);
} else if (args[0] === 'm!twitter') {
twitter(to, args[1], args[2])
}
});
bot.addListener('error', function(message) {
console.log('error: ', message);
});
console.log('Starting Mercury');