plerobuddies/src/chat.js

52 lines
1.3 KiB
JavaScript

const args = require('minimist')(process.argv.slice(2));
// the main juice
const { buddies } = require('./config')
if(!buddies) throw "Did you seutp your config?"
const { toot } = require('./toot');
function assertBuddyConfigCorrect(buddyConfig) {
let errs = []
[ 'name', 'buddy', 'instance', 'oauthToken' ].forEach(prop => {
if(!buddyConfig[prop]) errs.push(`No '${prop}' property found`)
})
if(errs.length > 0) {
console.error(`Whoops, a buddy is misconfigured: ${errs.join(', ')}. Exiting.`)
process.exit(-1)
}
}
async function letBuddyChat(buddyConfig) {
//assertBuddyConfigCorrect(buddyConfig)
console.log(`bootstrapping chat for ${buddyConfig.name}...`)
const { chat } = require(`./buddies/${buddyConfig.name}/buddy`)
// contains 'toot', and maybe 'attach' / 'attachDescription'
const message = await chat(buddyConfig)
console.log(`buddy ${buddyConfig.name} has this to say: ${JSON.stringify(message)}`)
await toot(message, buddyConfig)
}
(async function() {
if(args.buddy) {
const config = buddies.find(b => b.buddy === args.buddy)
if(!config) {
console.error(`Whoops, you asked to let buddy "${args.buddy}" chat, but no config found? Exiting.`)
process.exit(-1)
}
await letBuddyChat(config)
} else {
for await(buddyConfig of buddies) {
await letBuddyChat(buddyConfig)
}
}
console.log('Done! for now... ')
})()