Add feed deletion & better help menus

This commit is contained in:
hgw 2023-10-02 02:11:27 +00:00
parent cebfcfe272
commit dba5b2ecf1
3 changed files with 77 additions and 13 deletions

8
bot.js
View File

@ -71,10 +71,14 @@ function openPostWorker(chan, command, d1, d2, d3, d4, d5, d6) {
}
async function help(chan, sub) {
var sub = sub.toLowerCase()
openPostWorker(chan, 'help', sub)
}
async function opt(chan, user, setting, setting2, value, value2) {
if (setting == undefined && setting2 == undefined && value == undefined && value2 == undefined) {
openPostWorker(chan, 'help', 'opt')
}
if (setting == 'operset' || setting == "get") {
await checkUserHostmask(user)
}
@ -163,8 +167,12 @@ bot.addListener('message', function(nick, to, text, from) {
} else if (command === config.irc.prefix+'twitter') {
twitter(to, args[1], args[2])
} else if (command === config.irc.prefix+'opt') {
if (args[1] == undefined ) {
help(to, "opt")
} else {
opt(to, nick, args[1], args[2], args[3], args[4])
}
}
msgTimeout.add(to);
setTimeout(() => {
msgTimeout.delete(to);

View File

@ -40,6 +40,11 @@ function errorMessage(error, code, extra) {
async function help(sub) {
content = [];
if ( config.irc.prefix == undefined ) {
var prefix = 'm!'
} else {
var prefix = config.irc.prefix
}
if (sub === undefined) {
var sub = "default"
}
@ -63,19 +68,28 @@ async function help(sub) {
consoleLog('[help.default] Logo disabled, not including in output')
}
content.push('Mercury RSS Client - https://git.supernets.org/hgw/mercury')
content.push(config.irc.prefix+'feed [USER/FEED/ALIAS] [ENTRIES(opt)] - Return the last x amount of entries from any RSS feed + more (see m!help feed)')
content.push(config.irc.prefix+"opt [CATEGORY] [OPTION] [VALUE] - Control bot options, see wiki for info on usage.")
content.push(config.irc.prefix+'help [COMMAND(opt)] - Brings up this dialogue or instructions for a specific command if specified')
content.push(prefix+'feed [USER/FEED/ALIAS] [ENTRIES(opt)] - Return the last x amount of entries from any RSS feed + more (see m!help feed)')
content.push(prefix+"opt [CATEGORY] [OPTION] [VALUE] - Control bot options, see wiki for info on usage.")
content.push(prefix+'help [COMMAND(opt)] - Brings up this dialogue or instructions for a specific command if specified')
content.push('Help shown here may not be comprehensive, more detailed documentation is available on the repository.')
sendUpstream(content)
}
if (sub === "feed") {
content.push(config.irc.prefix+'feed Help')
content.push(config.irc.prefix+'feed [URL] [ENTRIES (opt)] - Last entries from any valid RSS feed URL.')
content.push(config.irc.prefix+'feed twitter/[USERNAME] [ENTRIES (opt)] - Last tweets from any X/Twitter account.')
content.push(config.irc.prefix+'feed github/[USER]/[REPO]/[MODE (opt)] [ENTRIES (opt)] - Last commits/releases from any repo. Mode can be "commits" or "releases"')
content.push(config.irc.prefix+'feed me OR [NICK] - Your own personalised RSS feed, see repo for configuration')
content.push(config.irc.prefix+'feed [ALIAS] [ENTRIES(opt)] - Last entries from a feed associated with a set alias, repo for configuration')
content.push(prefix+'feed Help Menu')
content.push(prefix+'feed [URL] [ENTRIES (opt)] - Last entries from any valid RSS feed URL.')
content.push(prefix+'feed twitter/[USERNAME] [ENTRIES (opt)] - Last tweets from any X/Twitter account.')
content.push(prefix+'feed github/[USER]/[REPO]/[MODE (opt)] [ENTRIES (opt)] - Last commits/releases from any repo. Mode can be "commits" or "releases"')
content.push(prefix+'feed me OR [NICK] - Your own personalised RSS feed, see repo for configuration')
content.push(prefix+'feed [ALIAS] [ENTRIES(opt)] - Last entries from a feed associated with a set alias, repo for configuration')
sendUpstream(content)
}
if (sub === "opt") {
content.push(prefix+'opt Help Menu')
content.push(prefix+'opt feed - Modify user feed settings, run \"'+prefix+'opt feed\" for more details')
content.push(prefix+'opt alias - Modify aliases, run \"'+prefix+'opt alias\" for more details')
content.push(prefix+'opt set - Modify user bot settings, run \"'+prefix+'opt set\" for more details')
content.push(prefix+'opt get - Displays specific bot setting')
content.push(prefix+'opt operset - Modify global bot settings (ADMIN)')
sendUpstream(content)
}
}

View File

@ -55,6 +55,12 @@ function errorMessage(error, code, extra) {
process.exit()
}
function arrayRemove(array, value) {
return array.filter(function (o) {
return o != value;
})
}
async function testFeed(feedURL) {
try {
consoleLog('[options.testFeed] Testing '+feed)
@ -67,8 +73,20 @@ async function testFeed(feedURL) {
}
async function feed(nick, setting, value) {
if (setting == undefined ) {
content = []
content.push(config.irc.prefix+'opt feed Help Menu')
content.push(config.irc.prefix+'opt feed add [VALUE] - Adds a valid RSS feed URL to your feed list')
content.push(config.irc.prefix+'opt feed del [VALUE] - Removes any existing RSS feed from your feed list')
content.push(config.irc.prefix+'opt feed list - Lists all of the exiting feeds in your feed list')
var output = content.join("\n")
sendUpstream(output)
}
if (setting != undefined ) {
var setting = setting.toLowerCase()
}
if (setting === 'add') {
consoleLog('[options.feed] '+nick+' is adding '+value)
consoleLog('[options.feed] '+nick+' is adding feed entry: '+value)
await testFeed(value);
var file = editJsonFile('/home/node/app/config/usersettings.json');
try {
@ -85,6 +103,18 @@ async function feed(nick, setting, value) {
sendUpstream(value + ' added to your feed list')
}
if (setting === "del") {
consoleLog('[options.feed] '+nick+' is removing feed entry: '+value)
var array = uconfig[nick].feeds
var file = editJsonFile('/home/node/app/config/usersettings.json');
if (array.includes(value) == false ) {
sendUpstream(errorMsg+' '+value+' is not saved in your feed list')
}
var newArray = arrayRemove(array, value)
file.set(nick+'.feeds', newArray)
file.save();
sendUpstream('Feed entry removed ('+value+' ==> BTFO\'d)')
}
if (setting === 'list') {
content = [];
try {
@ -103,6 +133,18 @@ async function feed(nick, setting, value) {
}
async function alias(setting, value, url, nick) {
if (setting == undefined ) {
content = []
content.push(config.irc.prefix+'opt alias Help Menu')
content.push(config.irc.prefix+'opt alias add [ALIAS] [URL] - Adds an alias for any valid RSS feed')
content.push(config.irc.prefix+'opt alias del [ALIAS] [URL] - Removes an alias')
content.push(config.irc.prefix+'opt alias list - Lists all of your existing alises')
var output = content.join("\n")
sendUpstream(output)
}
if (setting != undefined ) {
var setting = setting.toLowerCase()
}
if (setting === 'add') {
var value = value.toUpperCase()
consoleLog('[options.alias] Adding/editing an alias for'+nick+': '+value+' ==> '+url)
@ -222,8 +264,8 @@ async function operset(setting, value, value2, hostmask) {
if (setting === 'feed') {
feed(user, setting2, value);
} else if (setting === 'list') {
feed(user, setting2)
//} else if (setting === 'list') {
// feed(user, setting2)
} else if (setting === 'get') {
get(setting2, hostmask, user);
} else if(setting === 'alias') {