mirror of
https://github.com/LBRYFoundation/lbry-wunderbot.git
synced 2025-08-23 09:37:27 +00:00
Reformat bot for latest discord.js Bump Node to v16 Fix embeds across the board Implement intents for new discord API Remove SupportBot module Remove WelcomeBot module Fixed !helpcommands and !price helptext logic Fix LBRYLinker for new embed system Remove ClaimBot completely (Unused) Remove RoleSetter (No longer used) Remove Speech Module (Spee.ch is deprecated)
136 lines
4.8 KiB
JavaScript
136 lines
4.8 KiB
JavaScript
let request = require('request');
|
|
let config = require('config');
|
|
let hasPerms = require('../helpers.js').hasPerms;
|
|
let inPrivate = require('../helpers.js').inPrivate;
|
|
let ChannelID = config.get('gitrelease').channel;
|
|
|
|
exports.commands = [
|
|
'releasenotes' // command that is in this file, every command needs it own export as shown below
|
|
];
|
|
|
|
exports.releasenotes = {
|
|
usage: '<desktop/android>',
|
|
description: 'gets current release notes from GitHub, for either Desktop or Android',
|
|
process: function(bot, msg, suffix) {
|
|
let releaseType = suffix.toLowerCase();
|
|
let releaseTypePost = null;
|
|
|
|
if (releaseType === 'android post' || releaseType === 'desktop post') {
|
|
releaseTypePost = releaseType.charAt(0).toUpperCase() + releaseType.slice(1, 7);
|
|
console.log('Post message detected ' + releaseTypePost);
|
|
}
|
|
let releaseTypeName = releaseType.charAt(0).toUpperCase() + releaseType.slice(1);
|
|
if (releaseType !== 'android' && releaseType !== 'desktop' && releaseType !== 'android post' && releaseType !== 'desktop post') {
|
|
msg.reply('Please specify which release notes to display: "desktop" or "android".');
|
|
return;
|
|
}
|
|
const headers = {
|
|
'Content-Type': 'application/json',
|
|
'User-Agent': 'Super Agent/0.0.1'
|
|
};
|
|
// Configure the request
|
|
let options;
|
|
if (releaseTypePost !== null) {
|
|
options = {
|
|
url: 'https://api.github.com/repos/lbryio/lbry-' + releaseTypePost + '/releases/latest',
|
|
method: 'GET',
|
|
headers: headers
|
|
};
|
|
} else {
|
|
console.log('Release being sent: ' + releaseTypeName);
|
|
options = {
|
|
url: 'https://api.github.com/repos/lbryio/lbry-' + releaseTypeName + '/releases/latest',
|
|
method: 'GET',
|
|
headers: headers
|
|
};
|
|
}
|
|
// Start the request
|
|
let message;
|
|
request(options, function(error, response, body) {
|
|
let json = JSON.parse(body);
|
|
let releasemessage = json.body;
|
|
//console.log(releasemessage);
|
|
let releasename = json.name || json.tag_name;
|
|
let releasedate = json.published_at;
|
|
let releaseurl = json.html_url;
|
|
if (releasemessage.length < 2000) {
|
|
message = {
|
|
embed: {
|
|
title: '*Download ' + releasename + ' here!*',
|
|
description: releasemessage.replace('###', ''),
|
|
url: releaseurl,
|
|
color: 7976557,
|
|
timestamp: releasedate,
|
|
author: {
|
|
name: 'LBRY ' + releaseType + ' release notes for ' + releasename,
|
|
icon_url: 'https://spee.ch/b/Github-PNG-Image.png'
|
|
},
|
|
footer: {
|
|
icon_url: 'https://spee.ch/2/pinkylbryheart.png',
|
|
text: 'LBRY ' + releaseType + ' updated '
|
|
}
|
|
}
|
|
};
|
|
if (inPrivate(msg)) {
|
|
msg.channel.send(message);
|
|
return;
|
|
}
|
|
if ((hasPerms(msg) && suffix === 'android post') || (hasPerms(msg) && suffix === 'desktop post')) {
|
|
bot.channels
|
|
.fetch(ChannelID)
|
|
.then(channel => channel.send(message))
|
|
.catch(console.error);
|
|
} else {
|
|
let authorMention = msg.author.toString();
|
|
msg.channel.send(`${authorMention}, Release notes sent via DM`);
|
|
msg.author.send(message);
|
|
}
|
|
} else {
|
|
message = releasemessage
|
|
.trim()
|
|
.split('###')
|
|
.filter(function(n) {
|
|
return n !== '';
|
|
});
|
|
let embedmessages = [];
|
|
for (let i = 0; i < message.length; i++) {
|
|
if (message[i]) {
|
|
embedmessages.push({
|
|
embed: {
|
|
description: message[i],
|
|
url: releaseurl,
|
|
color: 7976557,
|
|
timestamp: releasedate,
|
|
author: {
|
|
name: 'LBRY ' + releaseTypeName + ' release notes for ' + releasename,
|
|
icon_url: 'https://spee.ch/b/Github-PNG-Image.png'
|
|
},
|
|
footer: {
|
|
icon_url: 'https://spee.ch/2/pinkylbryheart.png',
|
|
text: 'LBRY ' + releaseTypeName + ' updated '
|
|
}
|
|
}
|
|
});
|
|
if (i === 0) embedmessages[i].embed.title = '*Download ' + releasename + ' here!*';
|
|
}
|
|
}
|
|
if (inPrivate(msg)) {
|
|
for (let i = 0; i < embedmessages.length; i++) {
|
|
msg.channel.send(embedmessages[i]);
|
|
}
|
|
return;
|
|
}
|
|
if ((hasPerms(msg) && suffix === 'android post') || 'desktop post') {
|
|
for (let i = 0; i < embedmessages.length; i++) {
|
|
bot.channels.get(ChannelID).send(embedmessages[i]);
|
|
}
|
|
} else {
|
|
msg.channel.send(msg.author + ' Release notes sent via DM');
|
|
for (let i = 0; i < embedmessages.length; i++) {
|
|
msg.author.send(embedmessages[i]);
|
|
}
|
|
}
|
|
}
|
|
});
|
|
}
|
|
};
|