136 lines
4.7 KiB
JavaScript
136 lines
4.7 KiB
JavaScript
const fs = require('fs')
|
|
const irc = require('irc');
|
|
const readline = require('readline')
|
|
const model = 'user,date,message'
|
|
const { dirname } = require('path');
|
|
const rootDir = dirname(require.main.filename);
|
|
const settings = JSON.parse(fs.readFileSync(rootDir + '/settings.json'));
|
|
|
|
let currentChannel = settings.channels[0]
|
|
|
|
const client = new irc.Client(settings.server, settings.username, {
|
|
channels: settings.channels,
|
|
userName: 'gordown',
|
|
realName: 'Gor Down',
|
|
autoRejoin: true,
|
|
retryCount: 100000000,
|
|
retryDelay: 2*60*1000,
|
|
// secure: true,
|
|
// certExpired: true,
|
|
// selfSigned: true
|
|
});
|
|
|
|
client.addListener('registered', () => {
|
|
|
|
//////////////LISTENERS////////////////////
|
|
client.addListener('error', (message) => {
|
|
console.log('Error: ' + message)
|
|
})
|
|
|
|
client.addListener('message', function (from, channel, message) {
|
|
if (channel === settings.username) return
|
|
logMessage(from, channel, message)
|
|
});
|
|
|
|
|
|
client.addListener('join', (channel, nick) => {
|
|
logMessage(nick, channel, "Joined the channel")
|
|
//I'M THE ANIME GIRL FAGGOT
|
|
if (nick === settings.username) sendMessage(channel, "# Appears as Jhenna_Hina.http://www.mermeliz.com/hina/dl/Jhenna_Hina.AVB")
|
|
})
|
|
|
|
client.addListener('part', (channel, nick, reason, _message) => {
|
|
console.log(channel)
|
|
logMessage(nick, channel, "Parted: " + reason)
|
|
})
|
|
|
|
client.addListener('quit', (nick, reason, channels, _message) => {
|
|
for(i in channels){
|
|
logMessage(nick, channels[i], "Left: " + reason)
|
|
}
|
|
})
|
|
|
|
client.addListener('kick', (channel, nick, by, reason, _message) => {
|
|
logMessage(nick, channel, "Kicked by: " + by + ": " + reason)
|
|
})
|
|
|
|
////////////////////////////////////////////////////////////////
|
|
|
|
|
|
|
|
///LOGGING AND SHIT/////////////////////////////////////////////
|
|
function logMessage(from, channel, message){
|
|
const currentDate = new Date();
|
|
////////////////////////////////////////////////////////////////DATE FORMAT
|
|
const year = currentDate.getFullYear();
|
|
const month = String(currentDate.getMonth() + 1).padStart(2, '0');
|
|
const day = String(currentDate.getDate()).padStart(2, '0');
|
|
const hours = String(currentDate.getHours()).padStart(2, '0');
|
|
const minutes = String(currentDate.getMinutes()).padStart(2, '0');
|
|
const seconds = String(currentDate.getSeconds()).padStart(2, '0');
|
|
|
|
////////////////////////////////////////////////////////////////
|
|
const formattedDate = `${year}-${month}-${day} ${hours}:${minutes}:${seconds}`;
|
|
const filename = rootDir + '/logs/' + channel + '.csv'
|
|
|
|
if (!fs.existsSync(filename)){
|
|
fs.writeFileSync(filename, model)
|
|
}
|
|
|
|
fs.appendFileSync(filename, `\n${from},${formattedDate},"${message}"`)
|
|
if(from !== settings.username)console.log(`${from}: ${message}`)
|
|
}
|
|
|
|
function sendMessage(channel, message){
|
|
|
|
logMessage(settings.username, channel, message)
|
|
client.say(channel, message)
|
|
}
|
|
|
|
////////////////////////////////////////////////////////////////
|
|
|
|
|
|
//COMMAND LINE SHIT/////////////////////////////////
|
|
|
|
const rl = readline.createInterface({
|
|
input: process.stdin,
|
|
output: process.stdout
|
|
});
|
|
|
|
function messagePrompt(){
|
|
rl.question(settings.username + ': ', (command) => {
|
|
|
|
|
|
const split = command.split("!")
|
|
const prefix = split[0]
|
|
if(prefix === "g"){
|
|
const terminalCommand = split[1].split(' ')[0]
|
|
const args = split[1].split(' ')[1] ? split[1].split(' ')[1] : ""
|
|
switch (terminalCommand) {
|
|
case "switch_channel":
|
|
console.log("Received args:", args);
|
|
if (!args) {
|
|
console.log("Arguments required");
|
|
break
|
|
}
|
|
if (!settings.channels.includes(args)) {
|
|
console.log(`That channel '${args}' is not on the config!`);
|
|
break
|
|
}
|
|
currentChannel = args;
|
|
console.log("Current Channel set to:", currentChannel);
|
|
break;
|
|
case "get_current_channel":
|
|
console.log(currentChannel)
|
|
break
|
|
}
|
|
}else{
|
|
sendMessage(currentChannel, command)
|
|
}
|
|
messagePrompt()
|
|
});
|
|
}
|
|
|
|
rl.prompt();
|
|
messagePrompt()
|
|
}) |