mirror of
https://github.com/LBRYFoundation/lbry-wunderbot.git
synced 2025-09-02 18:25:18 +00:00
big cleanup
how does this bot even work?
This commit is contained in:
parent
e5bae39aeb
commit
1631d4aeab
12 changed files with 57 additions and 210 deletions
|
@ -20,9 +20,7 @@ function init(discordBot_) {
|
|||
discordBot = discordBot_;
|
||||
console.log('Activating claimbot');
|
||||
discordBot.channels.get(channels[0]).send('activating claimbot');
|
||||
setInterval(function() {
|
||||
announceClaimsV2();
|
||||
}, 60 * 1000);
|
||||
setInterval(announceClaimsV2, 60 * 1000);
|
||||
announceClaimsV2();
|
||||
}
|
||||
|
||||
|
@ -32,8 +30,7 @@ function announceClaimsV2() {
|
|||
let currentBlock = lastProcessedBlock;
|
||||
claims.forEach(c => {
|
||||
if (c.height <= lastProcessedBlock) return;
|
||||
currentBlock = c.height;
|
||||
console.log(JSON.stringify(c, null, 4));
|
||||
currentBlock = Math.max(currentBlock, c.height);
|
||||
|
||||
//filter claims that we don't want to announce
|
||||
if (c.bid_state === 'Expired' || c.bid_state === 'Spent') return;
|
||||
|
@ -99,8 +96,15 @@ function embedFromClaim(claim) {
|
|||
*/
|
||||
function getClaimsForLastBlock() {
|
||||
return new Promise((resolve, reject) => {
|
||||
let blockSelectQuery = 'SELECT height FROM block where height > ' + lastProcessedBlock;
|
||||
if (lastProcessedBlock === 0) {
|
||||
blockSelectQuery = 'SELECT MAX(height) AS height FROM block';
|
||||
}
|
||||
let query =
|
||||
'SELECT t1.*, t3.name AS channel_name, t4.value AS bid_amount FROM claim t1 INNER JOIN (SELECT MAX(height) AS height FROM block) t2 ON t1.height = t2.height LEFT JOIN claim t3 ON t1.publisher_id = t3.claim_id LEFT JOIN output t4 ON (t1.transaction_hash_id = t4.transaction_hash AND t1.vout = t4.vout)';
|
||||
'SELECT t1.*, t3.name AS channel_name, t4.value AS bid_amount FROM claim t1 INNER JOIN (' +
|
||||
blockSelectQuery +
|
||||
') t2 ON t1.height = t2.height ' +
|
||||
'LEFT JOIN claim t3 ON t1.publisher_id = t3.claim_id LEFT JOIN output t4 ON (t1.transaction_hash_id = t4.transaction_hash AND t1.vout = t4.vout)';
|
||||
let options = {
|
||||
method: 'GET',
|
||||
url: 'https://chainquery.lbry.io/api/sql',
|
||||
|
|
|
@ -32,19 +32,20 @@ let checkForCommand = function(message) {
|
|||
}
|
||||
//for each message go through all the commands and check if there are any matches
|
||||
Object.keys(commands).forEach(command => {
|
||||
//during the first run also build the cache
|
||||
if (firstRun) commandsList += command + ', ';
|
||||
|
||||
//if a command is found
|
||||
if (!message.author.bot && message.content.toLowerCase().indexOf(command.toLowerCase()) >= 0 && commands[command].operation === 'send') {
|
||||
//send a message to the channel according to the config
|
||||
message.channel.send('', new Discord.RichEmbed(commands[command].bundle));
|
||||
}
|
||||
});
|
||||
if (firstRun) {
|
||||
commandsList = Object.keys(commands)
|
||||
.sort()
|
||||
.join(', ');
|
||||
}
|
||||
//if the user is requesting the list of commands, then print it
|
||||
if (!message.author.bot && message.content.toLowerCase().indexOf('!helpcommands') >= 0) {
|
||||
let bundle = commands['!helpcommands'].bundle;
|
||||
commandsList = commandsList.replace(/,\s$/g, '');
|
||||
bundle.description = '**' + commandsList + '**';
|
||||
message.channel.send('', new Discord.RichEmbed(bundle));
|
||||
}
|
||||
|
|
|
@ -1,24 +0,0 @@
|
|||
/*
|
||||
// Example #1 Command(use this to make your Commands with triggers like !demo)
|
||||
exports.commands = [
|
||||
"demo" // command name that will be used for next lines of code below
|
||||
]
|
||||
|
||||
exports.demo = {
|
||||
usage: "<subcommand>", //command usage like !demo <@username>, exclude !demo
|
||||
description: 'description of command', //the description of command for !help command
|
||||
process: function(bot,msg,suffix){
|
||||
// Here the bot,msg and suffix is available, this function can be async if needed.
|
||||
}
|
||||
}
|
||||
|
||||
// Example #2 Function(use this to make your Functions that dont need trigger words unlike !demo)
|
||||
exports.custom = [
|
||||
"myFunction" //change this to your function name
|
||||
]
|
||||
|
||||
exports.myFunction = function(bot) {
|
||||
// Other functions that need to be ran once on bootup!
|
||||
// For example a timed function and or some init stuff..
|
||||
}
|
||||
*/
|
|
@ -1,15 +0,0 @@
|
|||
/*'use strict';
|
||||
// Moderation module, handles banning and kicking and more...
|
||||
let hasPerms = require('../helpers.js').hasPerms;
|
||||
|
||||
exports.commands = [
|
||||
"m"
|
||||
]
|
||||
|
||||
exports.m = {
|
||||
usage: "<subcommand> <reason>",
|
||||
description: 'ban: bans the user with the reason\n kick: get adress for your deposits\n',
|
||||
process: function(bot,msg,suffix){
|
||||
console.log(msg.member.user);
|
||||
}
|
||||
}*/
|
|
@ -99,11 +99,6 @@ exports.price = {
|
|||
format: '$0,0.00',
|
||||
sign: 'NZD '
|
||||
},
|
||||
PLN: {
|
||||
steps: ['LBCBTC', 'BTCPLN'],
|
||||
format: 'zł 0,0.00',
|
||||
sign: 'zł'
|
||||
},
|
||||
RUB: {
|
||||
steps: ['LBCBTC', 'BTCRUB'],
|
||||
format: 'RUB 0,0.00',
|
||||
|
@ -229,11 +224,6 @@ exports.price = {
|
|||
format: 'KM 0,0.00',
|
||||
sign: 'KM'
|
||||
},
|
||||
BAM: {
|
||||
steps: ['LBCBTC', 'BTCBAM'],
|
||||
format: 'KM 0,0.00',
|
||||
sign: 'KM'
|
||||
},
|
||||
AZN: {
|
||||
steps: ['LBCBTC', 'BTCAZN'],
|
||||
format: '₼ 0,0.00',
|
||||
|
@ -365,10 +355,6 @@ exports.price = {
|
|||
url: 'https://blockchain.info/ticker',
|
||||
path: '$.NZD.buy'
|
||||
},
|
||||
BTCPLN: {
|
||||
url: 'https://blockchain.info/ticker',
|
||||
path: '$.PLN.buy'
|
||||
},
|
||||
BTCRUB: {
|
||||
url: 'https://blockchain.info/ticker',
|
||||
path: '$.RUB.buy'
|
||||
|
@ -553,29 +539,19 @@ exports.price = {
|
|||
msg.channel.send('Please use <#' + ChannelID + '> or DMs to talk to price bot.');
|
||||
return;
|
||||
}
|
||||
var message =
|
||||
'**' +
|
||||
command +
|
||||
'**: show the price of 1 LBC in ' +
|
||||
options.defaultCurrency +
|
||||
'\n' +
|
||||
'**' +
|
||||
command +
|
||||
' help**: this message\n' +
|
||||
'**' +
|
||||
command +
|
||||
' CURRENCY**: show the price of 1 LBC in CURRENCY. Supported values for CURRENCY are Listed Below\n' +
|
||||
'**' +
|
||||
command +
|
||||
' CURRENCY AMOUNT**: show the price of AMOUNT LBC in CURRENCY\n' +
|
||||
'**Supported Currencies:** *usd*, *gbp*, *eur*, *aud*, *brl*, *cad*, *chf*, *clp*, *cny*, *dkk*, *hkd*, *inr*, *isk*, *jpy*, *krw*, *nzd*, *pln* ,*rub*, *sek*, *sgd*, *thb*, *twd*, *myr*, *bnd*,*vnd*, *php*, *sar*, *mxn*, *try*, *mmk*, *khr*, *aed*, *zar*, *pgk*, *egp*,*nok*, *hrk*, *huf*, *all*, *gel*, *mdl*, *bam* ,*kzt*, *azn*, *amd*, *byn*, *btn*, *npr*, *bdt*, *pkr*, *ars*, *pln*, *idr* and *btc* (case-insensitive)';
|
||||
var message = `**${command}**: show the price of 1 LBC in ${options.defaultCurrency}
|
||||
**${command} help**: this message
|
||||
**${command} CURRENCY**: show the price of 1 LBC in CURRENCY. Supported values for CURRENCY are Listed Below
|
||||
**${command} CURRENCY AMOUNT**: show the price of AMOUNT LBC in CURRENCY
|
||||
**Supported Currencies:** *usd*, *gbp*, *eur*, *aud*, *brl*, *cad*, *chf*, *clp*, *cny*, *dkk*, *hkd*, *inr*, *isk*, *jpy*, *krw*, *nzd*, *pln* ,*rub*, *sek*, *sgd*, *thb*, *twd*, *myr*, *bnd*,*vnd*, *php*, *sar*, *mxn*, *try*, *mmk*, *khr*, *aed*, *zar*, *pgk*, *egp*,*nok*, *hrk*, *huf*, *all*, *gel*, *mdl*, *bam* ,*kzt*, *azn*, *amd*, *byn*, *btn*, *npr*, *bdt*, *pkr*, *ars*, *pln*, *idr* and *btc* (case-insensitive)`;
|
||||
msg.channel.send(message);
|
||||
}
|
||||
|
||||
function formatMessage(amount, rate, option) {
|
||||
var cur = option.sign;
|
||||
var value = numeral(rate.rate * amount).format(option.format);
|
||||
return '*' + numeral(amount).format('0,0[.][00000000]') + ' LBC = ' + cur + ' ' + value + '*\n_last updated ' + rate.time.utc().format(options.dtFormat) + '_';
|
||||
return `*${numeral(amount).format('0,0[.][00000000]')} LBC = ${cur} ${value}*
|
||||
_last updated ${rate.time.utc().format(options.dtFormat)}_`;
|
||||
}
|
||||
|
||||
function doSteps(bot, currency, amount) {
|
||||
|
@ -605,7 +581,7 @@ exports.price = {
|
|||
if (steps.length > 0) {
|
||||
var pairName = steps[0];
|
||||
if (!options.api[pairName]) {
|
||||
msg.channel.send('There was a configuration error. ' + pairName + ' pair was not found.');
|
||||
msg.channel.send(`There was a configuration error. ${pairName} pair was not found.`);
|
||||
return;
|
||||
}
|
||||
|
||||
|
@ -641,7 +617,7 @@ exports.price = {
|
|||
cachedRates[currency] = result;
|
||||
msg.channel.send(formatMessage(amount, result, option));
|
||||
} else {
|
||||
msg.channel.send('The rate returned for the ' + pairName + ' pair was invalid.');
|
||||
msg.channel.send(`The rate returned for the ${pairName} pair was invalid.`);
|
||||
}
|
||||
});
|
||||
}
|
||||
|
|
|
@ -1,6 +1,5 @@
|
|||
let hasPerms = require('../helpers.js').hasPerms;
|
||||
let inPrivate = require('../helpers.js').inPrivate;
|
||||
|
||||
exports.commands = [
|
||||
'purge' // command that is in this file, every command needs it own export as shown below
|
||||
];
|
||||
|
|
|
@ -1,21 +0,0 @@
|
|||
/*exports.commands = [
|
||||
"remind" // command that is in this file, every command needs it own export as shown below
|
||||
]
|
||||
|
||||
exports.custom = [
|
||||
"checkReminders"
|
||||
]
|
||||
|
||||
exports.remind = {
|
||||
usage: "<time> <message>",
|
||||
description: 'description of command',
|
||||
process: async function(bot,msg,suffix){
|
||||
console.log(suffix);
|
||||
// Here the bot,msg and suffix is avaible, this function can be async if needed.
|
||||
}
|
||||
}
|
||||
|
||||
exports.checkReminders = function(bot) {
|
||||
// Other functions that needs to be ran once on bootup!
|
||||
// For example a timed function and or some init stuff..
|
||||
}*/
|
|
@ -1,6 +1,5 @@
|
|||
let request = require('request');
|
||||
let wget = require('wget');
|
||||
let fs = require('fs');
|
||||
let config = require('config');
|
||||
let hasSpeechBotChannels = require('../helpers.js').hasSpeechBotChannels;
|
||||
let inPrivate = require('../helpers.js').inPrivate;
|
||||
|
@ -103,11 +102,7 @@ exports.speech = {
|
|||
//define some image types to test against
|
||||
let imageTypes = ['jpg', 'jpeg', 'tiff', 'png', 'gif', 'bmp'];
|
||||
//check if the extension matches anything in the list. if it does set true if not set false
|
||||
if (imageTypes.indexOf(extension) !== -1) {
|
||||
return true;
|
||||
} else {
|
||||
return false;
|
||||
}
|
||||
return imageTypes.indexOf(extension) !== -1;
|
||||
};
|
||||
|
||||
//check if url is an image if its not throw error and help message
|
||||
|
@ -127,16 +122,15 @@ exports.speech = {
|
|||
let eighteen = words[2];
|
||||
|
||||
//check is NSFW if yes or no sets proper value if none
|
||||
if (eighteen == '' || eighteen == 'none' || eighteen == undefined || eighteen == null || eighteen == 'no' || eighteen == 'false' || eighteen == false || eighteen == 'n') {
|
||||
if (eighteen === '' || eighteen === 'none' || eighteen === undefined || eighteen === null || eighteen === 'no' || eighteen === 'false' || eighteen === false || eighteen === 'n') {
|
||||
eighteen = 'no';
|
||||
} else {
|
||||
eighteen = 'yes';
|
||||
}
|
||||
|
||||
//prepare url for wget
|
||||
let source = url;
|
||||
//parse the filename to use to save file
|
||||
filepath = source.split('/').pop();
|
||||
filepath = url.split('/').pop();
|
||||
//set proper directory for downloading image
|
||||
let outputFile = 'speech-uploads/' + filepath;
|
||||
//set download directory to current working directory
|
||||
|
@ -152,11 +146,9 @@ exports.speech = {
|
|||
console.log('error could not reach: ' + url + ' : ' + err);
|
||||
let message = '`error url could not be reached`';
|
||||
msg.channel.send(message);
|
||||
return;
|
||||
} else {
|
||||
let message = '`error url could not be reached`';
|
||||
msg.channel.send(message);
|
||||
return;
|
||||
}
|
||||
});
|
||||
|
||||
|
|
|
@ -1,12 +1,4 @@
|
|||
let jp = require('jsonpath');
|
||||
let moment = require('moment');
|
||||
let numeral = require('numeral');
|
||||
let request = require('request');
|
||||
let config = require('config');
|
||||
let needle = require('needle');
|
||||
let hasStatsBotChannels = require('../helpers.js').hasStatsBotChannels;
|
||||
let inPrivate = require('../helpers.js').inPrivate;
|
||||
let ChannelID = config.get('statsbot').mainchannel;
|
||||
let statsurl = 'https://coinmarketcap.com/currencies/library-credit/';
|
||||
exports.commands = [
|
||||
'stats' // command that is in this file, every command needs it own export as shown below
|
||||
|
@ -29,9 +21,6 @@ exports.stats = {
|
|||
let total_supply = Number(data.total_supply);
|
||||
let percent_change_1h = Number(data.quotes.USD.percent_change_1h);
|
||||
let percent_change_24h = Number(data.quotes.USD.percent_change_24h);
|
||||
let json = response.body[0];
|
||||
let newjson = parse_obj(json);
|
||||
let parse = JSON.stringify(newjson);
|
||||
let volume24_usd = Number(data.quotes.USD.volume_24h);
|
||||
let dt = new Date();
|
||||
let timestamp = dt.toUTCString();
|
||||
|
@ -56,69 +45,25 @@ exports.stats = {
|
|||
} else {
|
||||
data = response.body.data;
|
||||
let price_eur = Number(data.quotes.EUR.price);
|
||||
let description =
|
||||
'**Rank: [' +
|
||||
rank +
|
||||
'](' +
|
||||
statsurl +
|
||||
')**\n' +
|
||||
'**Data**\n' +
|
||||
'Market Cap: [$' +
|
||||
numberWithCommas(market_cap_usd) +
|
||||
'](' +
|
||||
statsurl +
|
||||
') \n' +
|
||||
'Total Supply: [' +
|
||||
numberWithCommas(total_supply) +
|
||||
' LBC](' +
|
||||
statsurl +
|
||||
')\n' +
|
||||
'Circulating Supply: [' +
|
||||
numberWithCommas(circulating_supply) +
|
||||
' LBC](' +
|
||||
statsurl +
|
||||
')\n' +
|
||||
'24 Hour Volume: [$' +
|
||||
volume24_usd +
|
||||
'](' +
|
||||
statsurl +
|
||||
') \n\n' +
|
||||
'**Price**\n' +
|
||||
'BTC: [₿' +
|
||||
price_btc.toFixed(8) +
|
||||
'](' +
|
||||
statsurl +
|
||||
')\n' +
|
||||
'USD: [$' +
|
||||
price_usd.toFixed(2) +
|
||||
'](' +
|
||||
statsurl +
|
||||
') \n' +
|
||||
'EUR: [€' +
|
||||
price_eur.toFixed(2) +
|
||||
'](' +
|
||||
statsurl +
|
||||
') \n' +
|
||||
'GBP: [£' +
|
||||
price_gbp.toFixed(2) +
|
||||
'](' +
|
||||
statsurl +
|
||||
') \n\n' +
|
||||
'**% Change**\n' +
|
||||
'1 Hour: [' +
|
||||
percent_change_1h +
|
||||
'](' +
|
||||
statsurl +
|
||||
') ' +
|
||||
hr_indicator +
|
||||
' \n\n' +
|
||||
'1 Day: [' +
|
||||
percent_change_24h +
|
||||
'](' +
|
||||
statsurl +
|
||||
') ' +
|
||||
day_indicator +
|
||||
' \n\n';
|
||||
let description = `**Rank: [${rank}](${statsurl})**
|
||||
**Data**
|
||||
Market Cap: [$${numberWithCommas(market_cap_usd)}](${statsurl})
|
||||
Total Supply: [${numberWithCommas(total_supply)} LBC](${statsurl})
|
||||
Circulating Supply: [${numberWithCommas(circulating_supply)} LBC](${statsurl})
|
||||
24 Hour Volume: [$${volume24_usd}](${statsurl})
|
||||
|
||||
**Price**
|
||||
BTC: [₿${price_btc.toFixed(8)}](${statsurl})
|
||||
USD: [$${price_usd.toFixed(2)}](${statsurl})
|
||||
EUR: [€${price_eur.toFixed(2)}](${statsurl})
|
||||
GBP: [£${price_gbp.toFixed(2)}](${statsurl})
|
||||
|
||||
**% Change**
|
||||
1 Hour: [${percent_change_1h}](${statsurl}) ${hr_indicator}
|
||||
|
||||
1 Day: [${percent_change_24h}](${statsurl}) ${day_indicator}
|
||||
|
||||
`;
|
||||
const embed = {
|
||||
description: description,
|
||||
color: 7976557,
|
||||
|
@ -138,6 +83,7 @@ exports.stats = {
|
|||
});
|
||||
}
|
||||
});
|
||||
|
||||
function parse_obj(obj) {
|
||||
let array = [];
|
||||
let prop;
|
||||
|
@ -153,6 +99,7 @@ exports.stats = {
|
|||
}
|
||||
return array;
|
||||
}
|
||||
|
||||
function numberWithCommas(x) {
|
||||
return x.toString().replace(/\B(?=(\d{3})+(?!\d))/g, ',');
|
||||
}
|
||||
|
|
|
@ -1,7 +1,4 @@
|
|||
'use strict';
|
||||
//let config = require("config");
|
||||
//let rolelist = config.get("rolelist");
|
||||
const Discord = require('discord.js');
|
||||
let initialized = false;
|
||||
let discordBot = null;
|
||||
|
||||
|
|
|
@ -1,9 +0,0 @@
|
|||
'use strict';
|
||||
exports.commands = ['tip'];
|
||||
exports.tip = {
|
||||
usage: '<subcommand>',
|
||||
description: 'balance: get your balance\n deposit: get address for your deposits\n withdraw ADDRESS AMOUNT: withdraw AMOUNT credits to ADDRESS\n <user> <amount>: mention a user with @ and then the amount to tip them',
|
||||
process: function(bot) {
|
||||
return; // Tipping is now handled by the separate tipbot(in branch tipbot_dc), no need to to anything here...
|
||||
}
|
||||
};
|
|
@ -33,7 +33,7 @@ exports.onUserJoin = function(bot) {
|
|||
.send({
|
||||
embed: {
|
||||
description:
|
||||
'1. Be respectful to other community members. Harrasment and vulgarity will not be tolerated \n' +
|
||||
'1. Be respectful to other community members. Harassment and vulgarity will not be tolerated \n' +
|
||||
'2. Do not spam, advertise or post referral links \n' +
|
||||
'3. Use appropriate channels for your discussions/questions. If you are looking for help with LBRY, use #help, for price talk, use #market-and-trading \n' +
|
||||
'4. #general discussions should be at least somewhat related to LBRY, otherwise there is #random \n' +
|
||||
|
@ -56,7 +56,7 @@ exports.onUserJoin = function(bot) {
|
|||
description:
|
||||
'1. Type !tip help in the #bot-sandbox channel to interact with our Tipbot which can be used to send and receive LBRY Credits (LBC). **Enable 2FA in your Discord account settings!** \n' +
|
||||
'2. See the Frequently Asked Questions (FAQ) section below prior to asking for help or information on LBRY \n' +
|
||||
'3. Backing up your LBRY wallet is your responsbility, see FAQ link below \n' +
|
||||
'3. Backing up your LBRY wallet is your responsibility, see FAQ link below \n' +
|
||||
'4. You can find the LBRY Block explorer at https://explorer.lbry.io \n' +
|
||||
'5. Want to contribute more? Check out https://lbry.io/faq/contributing \n' +
|
||||
'6. Are you a dev? Check out the #dev channel \n' +
|
||||
|
@ -94,7 +94,7 @@ exports.onUserJoin = function(bot) {
|
|||
embed: {
|
||||
title: '*Click here to see all LBRY Frequently Asked Questions (FAQ)!*',
|
||||
description:
|
||||
'Want to backup your LBRY wallet? [**Backup**](https://lbry.io/faq/how-to-backup-wallet) \nLooking for LBRY data? [**Behind the scenes files**](https://lbry.io/faq/lbry-directories) \nTrouble starting LBRY? [**Startup troubleshooting**](https://lbry.io/faq/startup-troubleshooting) \nNeed help finding your log files (will help us troubleshoot!)? [**Find logs**](https://lbry.io/faq/how-to-find-lbry-log-file) \nNot able to stream any content? [**Troublshoot streaming**](https://lbry.io/faq/unable-to-stream)\nNeed help with publishing? [**How to Publish**](https://lbry.io/faq/how-to-publish) \nWant more LBRY Credits (LBC)? [**Get LBC**](https://lbry.io/faq/earn-credits) \nLooking for referral information? [**Referrals**](https://lbry.io/faq/referrals)',
|
||||
'Want to backup your LBRY wallet? [**Backup**](https://lbry.io/faq/how-to-backup-wallet) \nLooking for LBRY data? [**Behind the scenes files**](https://lbry.io/faq/lbry-directories) \nTrouble starting LBRY? [**Startup troubleshooting**](https://lbry.io/faq/startup-troubleshooting) \nNeed help finding your log files (will help us troubleshoot!)? [**Find logs**](https://lbry.io/faq/how-to-find-lbry-log-file) \nNot able to stream any content? [**Troubleshoot streaming**](https://lbry.io/faq/unable-to-stream)\nNeed help with publishing? [**How to Publish**](https://lbry.io/faq/how-to-publish) \nWant more LBRY Credits (LBC)? [**Get LBC**](https://lbry.io/faq/earn-credits) \nLooking for referral information? [**Referrals**](https://lbry.io/faq/referrals)',
|
||||
url: 'https://lbry.io/faq',
|
||||
color: 7976557,
|
||||
author: {
|
||||
|
@ -112,7 +112,7 @@ exports.onUserJoin = function(bot) {
|
|||
embed: {
|
||||
title: '*Have you checked out spee.ch yet?!*',
|
||||
description:
|
||||
"[**spee.ch**](https://spee.ch) runs on top of the LBRY network - it's essentially an open source, censorship resistent and decentralized image and video sharing site with the added benefit of being a web-based (works on mobile too!) gateway into the LBRY network. spee.ch can be used to retrieve LBRY images/videos that are free by accessing them through a web browser. \nFor example, if content is located at lbry://loose-cannons-episode1#12c87bb42dd8832167b1e54edf72bbd37bc47622, you can view it on spee.ch at: https://spee.ch/12c87bb42dd8832167b1e54edf72bbd37bc47622/loose-cannons-episode1. You can also view channels on spee.ch, such as: https://spee.ch/@copchronicles:5c039dc7423657e59d78939df72c186e43273675 or https://spee.ch/@MinutePhysics:589276465a23c589801d874f484cc39f307d7ec7 \n\nspee.ch also allows you to create a channel to group your uploads and retreive them easily. These channels are separate from any you may have in the LBRY app since they exist on the spee.ch site via a login process. You can even share your channel name and password so that others can contribute to it.",
|
||||
"[**spee.ch**](https://spee.ch) runs on top of the LBRY network - it's essentially an open source, censorship resistant and decentralized image and video sharing site with the added benefit of being a web-based (works on mobile too!) gateway into the LBRY network. spee.ch can be used to retrieve LBRY images/videos that are free by accessing them through a web browser. \nFor example, if content is located at lbry://loose-cannons-episode1#12c87bb42dd8832167b1e54edf72bbd37bc47622, you can view it on spee.ch at: https://spee.ch/12c87bb42dd8832167b1e54edf72bbd37bc47622/loose-cannons-episode1. You can also view channels on spee.ch, such as: https://spee.ch/@copchronicles:5c039dc7423657e59d78939df72c186e43273675 or https://spee.ch/@MinutePhysics:589276465a23c589801d874f484cc39f307d7ec7 \n\nspee.ch also allows you to create a channel to group your uploads and retrieve them easily. These channels are separate from any you may have in the LBRY app since they exist on the spee.ch site via a login process. You can even share your channel name and password so that others can contribute to it.",
|
||||
url: 'https://spee.ch/about',
|
||||
color: 7976557,
|
||||
author: {
|
||||
|
@ -140,7 +140,7 @@ exports.welcome = {
|
|||
msg.channel.send('command cannot be used in a DM');
|
||||
return;
|
||||
}
|
||||
if (suffix == '') {
|
||||
if (suffix === '') {
|
||||
msg.channel.send('no user defined');
|
||||
return;
|
||||
}
|
||||
|
@ -177,7 +177,7 @@ exports.welcome = {
|
|||
.send({
|
||||
embed: {
|
||||
description:
|
||||
'1. Be respectful to other community members. Harrasment and vulgarity will not be tolerated \n' +
|
||||
'1. Be respectful to other community members. Harassment and vulgarity will not be tolerated \n' +
|
||||
'2. Do not spam, advertise or post referral links \n' +
|
||||
'3. Use appropriate channels for your discussions/questions. If you are looking for help with LBRY, use #help, for price talk, use #market-and-trading \n' +
|
||||
'4. #general discussions should be at least somewhat related to LBRY, otherwise there is #random \n' +
|
||||
|
@ -201,7 +201,7 @@ exports.welcome = {
|
|||
description:
|
||||
'1. Type !tip help in the #bot-sandbox channel to interact with our Tipbot which can be used to send and receive LBRY Credits (LBC). **Enable 2FA in your Discord account settings!** \n' +
|
||||
'2. See the Frequently Asked Questions (FAQ) section below prior to asking for help or information on LBRY \n' +
|
||||
'3. Backing up your LBRY wallet is your responsbility, see FAQ link below \n' +
|
||||
'3. Backing up your LBRY wallet is your responsibility, see FAQ link below \n' +
|
||||
'4. You can find the LBRY Block explorer at https://explorer.lbry.io \n' +
|
||||
'5. Want to contribute more? Check out https://lbry.io/faq/contributing \n' +
|
||||
'6. Are you a dev? Check out the #dev channel \n' +
|
||||
|
@ -241,7 +241,7 @@ exports.welcome = {
|
|||
embed: {
|
||||
title: '*Click here to see all LBRY Frequently Asked Questions (FAQ)!*',
|
||||
description:
|
||||
'Want to backup your LBRY wallet? [**Backup**](https://lbry.io/faq/how-to-backup-wallet) \nLooking for LBRY data? [**Behind the scenes files**](https://lbry.io/faq/lbry-directories) \nTrouble starting LBRY? [**Startup troubleshooting**](https://lbry.io/faq/startup-troubleshooting) \nNeed help finding your log files (will help us troubleshoot!)? [**Find logs**](https://lbry.io/faq/how-to-find-lbry-log-file) \nNot able to stream any content? [**Troublshoot streaming**](https://lbry.io/faq/unable-to-stream)\nNeed help with publishing? [**How to Publish**](https://lbry.io/faq/how-to-publish) \nWant more LBRY Credits (LBC)? [**Get LBC**](https://lbry.io/faq/earn-credits) \nLooking for referral information? [**Referrals**](https://lbry.io/faq/referrals)',
|
||||
'Want to backup your LBRY wallet? [**Backup**](https://lbry.io/faq/how-to-backup-wallet) \nLooking for LBRY data? [**Behind the scenes files**](https://lbry.io/faq/lbry-directories) \nTrouble starting LBRY? [**Startup troubleshooting**](https://lbry.io/faq/startup-troubleshooting) \nNeed help finding your log files (will help us troubleshoot!)? [**Find logs**](https://lbry.io/faq/how-to-find-lbry-log-file) \nNot able to stream any content? [**Troubleshoot streaming**](https://lbry.io/faq/unable-to-stream)\nNeed help with publishing? [**How to Publish**](https://lbry.io/faq/how-to-publish) \nWant more LBRY Credits (LBC)? [**Get LBC**](https://lbry.io/faq/earn-credits) \nLooking for referral information? [**Referrals**](https://lbry.io/faq/referrals)',
|
||||
url: 'https://lbry.io/faq',
|
||||
color: 7976557,
|
||||
author: {
|
||||
|
@ -259,7 +259,7 @@ exports.welcome = {
|
|||
embed: {
|
||||
title: '*Have you checked out spee.ch yet?!*',
|
||||
description:
|
||||
"[**spee.ch**](https://spee.ch) runs on top of the LBRY network - it's essentially an open source, censorship resistent and decentralized image and video sharing site with the added benefit of being a web-based (works on mobile too!) gateway into the LBRY network. spee.ch can be used to retrieve LBRY images/videos that are free by accessing them through a web browser. \nFor example, if content is located at lbry://loose-cannons-episode1#12c87bb42dd8832167b1e54edf72bbd37bc47622, you can view it on spee.ch at: https://spee.ch/12c87bb42dd8832167b1e54edf72bbd37bc47622/loose-cannons-episode1. You can also view channels on spee.ch, such as: https://spee.ch/@copchronicles:5c039dc7423657e59d78939df72c186e43273675 or https://spee.ch/@MinutePhysics:589276465a23c589801d874f484cc39f307d7ec7 \n\nspee.ch also allows you to create a channel to group your uploads and retreive them easily. These channels are separate from any you may have in the LBRY app since they exist on the spee.ch site via a login process. You can even share your channel name and password so that others can contribute to it.",
|
||||
"[**spee.ch**](https://spee.ch) runs on top of the LBRY network - it's essentially an open source, censorship resistant and decentralized image and video sharing site with the added benefit of being a web-based (works on mobile too!) gateway into the LBRY network. spee.ch can be used to retrieve LBRY images/videos that are free by accessing them through a web browser. \nFor example, if content is located at lbry://loose-cannons-episode1#12c87bb42dd8832167b1e54edf72bbd37bc47622, you can view it on spee.ch at: https://spee.ch/12c87bb42dd8832167b1e54edf72bbd37bc47622/loose-cannons-episode1. You can also view channels on spee.ch, such as: https://spee.ch/@copchronicles:5c039dc7423657e59d78939df72c186e43273675 or https://spee.ch/@MinutePhysics:589276465a23c589801d874f484cc39f307d7ec7 \n\nspee.ch also allows you to create a channel to group your uploads and retrieve them easily. These channels are separate from any you may have in the LBRY app since they exist on the spee.ch site via a login process. You can even share your channel name and password so that others can contribute to it.",
|
||||
url: 'https://spee.ch/about',
|
||||
color: 7976557,
|
||||
author: {
|
||||
|
|
Loading…
Add table
Reference in a new issue