mirror of
https://gitlab.com/bignutty/labscore.git
synced 2025-06-08 14:13:02 -04:00
add permission checks to everything user-facing
This commit is contained in:
parent
9e9c53e1bd
commit
61274d6be5
66 changed files with 276 additions and 27 deletions
|
@ -1,14 +1,14 @@
|
|||
const { createEmbed } = require('../../../labscore/utils/embed')
|
||||
const { editOrReply } = require('../../../labscore/utils/message')
|
||||
|
||||
const { searchAudio } = require('../../../labscore/api');
|
||||
const { getRecentVideo } = require('../../../labscore/utils/attachment');
|
||||
const { renderMusicButtons } = require('../../../labscore/utils/buttons');
|
||||
|
||||
const superagent = require('superagent')
|
||||
|
||||
const urlr = /(https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|www\.[a-zA-Z0-9][a-zA-Z0-9-]+[a-zA-Z0-9]\.[^\s]{2,}|https?:\/\/(?:www\.|(?!www))[a-zA-Z0-9]+\.[^\s]{2,}|www\.[a-zA-Z0-9]+\.[^\s]{2,})/g
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
module.exports = {
|
||||
name: 'audio',
|
||||
aliases: ['aud'],
|
||||
|
@ -19,6 +19,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'audio'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
|
||||
run: async (context) => {
|
||||
context.triggerTyping();
|
||||
if (!context.message.messageReference) return editOrReply(context, { embeds: [createEmbed("warning", context, "You need to reply to a message containing a song link.")] })
|
||||
|
|
|
@ -5,6 +5,8 @@ const { STATICS } = require('../../../labscore/utils/statics')
|
|||
const { paginator } = require('../../../labscore/client');
|
||||
const { bingImages } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createImageResultPage(context, result){
|
||||
let res = {
|
||||
"embeds": [
|
||||
|
@ -39,6 +41,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'bing <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
|
|
|
@ -6,6 +6,8 @@ const { STATICS } = require('../../../labscore/utils/statics')
|
|||
const { paginator } = require('../../../labscore/client');
|
||||
const { bing } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createSearchResultPage(context, entry){
|
||||
let res;
|
||||
switch(entry.type){
|
||||
|
@ -103,6 +105,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'bing <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
|
|
|
@ -5,6 +5,8 @@ const { STATICS } = require('../../../labscore/utils/statics')
|
|||
const { paginator } = require('../../../labscore/client');
|
||||
const { googleImages } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createImageResultPage(context, result){
|
||||
let res = {
|
||||
"embeds": [
|
||||
|
@ -39,6 +41,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'image <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
|
|
|
@ -6,6 +6,8 @@ const { STATICS } = require('../../../labscore/utils/statics')
|
|||
const { paginator } = require('../../../labscore/client');
|
||||
const { google } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createSearchResultPage(context, result){
|
||||
let res;
|
||||
switch(result.type){
|
||||
|
@ -62,6 +64,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'google <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
|
|
|
@ -5,6 +5,8 @@ const { STATICS } = require('../../../labscore/utils/statics')
|
|||
const { lyrics } = require('../../../labscore/api');
|
||||
const { paginator } = require('../../../labscore/client');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createLyricsPage(context, search, fields){
|
||||
let em = createEmbed("default", context, {
|
||||
author: {
|
||||
|
@ -32,6 +34,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'lyrics <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
|
@ -43,7 +46,7 @@ module.exports = {
|
|||
let fields = [];
|
||||
if(search.body.lyrics.includes('[')){
|
||||
// Split lyrics into field-sizes chunks if multiple verses are present
|
||||
let chunks = search.body.lyrics.split(/\[(.*?)\]/)
|
||||
let chunks = search.body.lyrics.replace(/\[Footnote .*?\]/g,'').split(/\[(.*?)\]/)
|
||||
let cur = {
|
||||
inline: false
|
||||
};
|
||||
|
@ -55,7 +58,7 @@ module.exports = {
|
|||
i += 1
|
||||
continue;
|
||||
}
|
||||
cur.value = c.substr(0,2048)
|
||||
cur.value = c.substr(0,1000)
|
||||
if(cur.value.endsWith('\n\n')) cur.value = cur.value.substr(0,cur.value.length-1)
|
||||
cur.value += ``
|
||||
i = 0
|
||||
|
@ -66,14 +69,14 @@ module.exports = {
|
|||
}
|
||||
} else {
|
||||
let message = createLyricsPage(context, search, [])
|
||||
message.description = search.body.lyrics.substr(0, 2048)
|
||||
message.description = search.body.lyrics.substr(0, 1024)
|
||||
return editOrReply(context, message)
|
||||
}
|
||||
|
||||
if(fields.length > 3){
|
||||
if(fields.length > 2){
|
||||
let pages = []
|
||||
while(fields.length) {
|
||||
let pageFields = fields.splice(0,3)
|
||||
let pageFields = fields.splice(0,2)
|
||||
|
||||
// Display less fields if they take up too much vertical space
|
||||
while(pageFields.map((f)=>f.value).join('\n').split('\n').length >= 36 && pageFields[1]){
|
||||
|
@ -100,7 +103,7 @@ module.exports = {
|
|||
return editOrReply(context, {embeds:[createEmbed("error", context, `Unable to perform lyrics search.`)]})
|
||||
}
|
||||
}
|
||||
console.log(e)
|
||||
//console.log(JSON.stringify(e.raw))
|
||||
return editOrReply(context, {embeds:[createEmbed("error", context, `Something went wrong.`)]})
|
||||
}
|
||||
},
|
||||
|
|
|
@ -8,6 +8,8 @@ const { quora, quoraResult } = require('../../../labscore/api');
|
|||
const { InteractionCallbackTypes } = require('detritus-client/lib/constants');
|
||||
const { Components } = require('detritus-client/lib/utils');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createQuoraAnswerPage(context, question, answer){
|
||||
let tags = question.tags.map((t) => {
|
||||
return pill(t)
|
||||
|
@ -126,6 +128,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'quora <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
|
|
|
@ -6,6 +6,8 @@ const { STATICS } = require('../../../labscore/utils/statics')
|
|||
const { paginator } = require('../../../labscore/client');
|
||||
const { reddit } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createRedditPage(context, result){
|
||||
let res = {
|
||||
"embeds": [
|
||||
|
@ -56,6 +58,7 @@ module.exports = {
|
|||
args: [
|
||||
{ default: "all", name: "type", type: "image", help: "Types of post the search query should return" }
|
||||
],
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
|
|
|
@ -1,5 +1,4 @@
|
|||
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
|
||||
const { link } = require('../../../labscore/utils/markdown')
|
||||
const { editOrReply } = require('../../../labscore/utils/message')
|
||||
const { STATICS } = require('../../../labscore/utils/statics')
|
||||
const { getRecentImage } = require("../../../labscore/utils/attachment");
|
||||
|
@ -7,6 +6,8 @@ const { getRecentImage } = require("../../../labscore/utils/attachment");
|
|||
const { paginator } = require('../../../labscore/client');
|
||||
const { reverseImageSearch } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createReverseImageSearchResultPage(context, result, source){
|
||||
let res = {
|
||||
"embeds": [
|
||||
|
@ -43,6 +44,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'reverse <image>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context) => {
|
||||
context.triggerTyping();
|
||||
try{
|
||||
|
|
|
@ -5,6 +5,8 @@ const { editOrReply } = require('../../../labscore/utils/message')
|
|||
const { paginator } = require('../../../labscore/client');
|
||||
const { rule34 } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createRule34Page(context, result){
|
||||
let res = {
|
||||
"embeds": [
|
||||
|
@ -56,6 +58,7 @@ module.exports = {
|
|||
args: [
|
||||
{name: 'site', default: 'rule34', type: 'string', help: `Site to search on \` ${Object.keys(SITES).join(', ')} \``}
|
||||
],
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
|
||||
|
|
|
@ -6,6 +6,8 @@ const { STATICS } = require('../../../labscore/utils/statics')
|
|||
const { paginator } = require('../../../labscore/client');
|
||||
const { urbandictionary } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createUrbanPage(context, result){
|
||||
let e = createEmbed("default", context, {
|
||||
description: `**${link(result.link, result.title)}**`,
|
||||
|
@ -45,6 +47,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'urbandictionary <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
try{
|
||||
|
|
|
@ -5,6 +5,8 @@ const { STATICS } = require('../../../labscore/utils/statics')
|
|||
const { weather } = require('../../../labscore/api');
|
||||
const { pill, icon } = require('../../../labscore/utils/markdown');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
module.exports = {
|
||||
name: 'weather',
|
||||
label: 'query',
|
||||
|
@ -15,6 +17,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'weather <location>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (location).`)]})
|
||||
|
|
|
@ -1,11 +1,12 @@
|
|||
const { createEmbed, formatPaginationEmbeds } = require('../../../labscore/utils/embed')
|
||||
const { link } = require('../../../labscore/utils/markdown')
|
||||
const { editOrReply } = require('../../../labscore/utils/message')
|
||||
const { STATICS } = require('../../../labscore/utils/statics')
|
||||
|
||||
const { paginator } = require('../../../labscore/client');
|
||||
const { wikihow } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function createWikiHowPage(context, result){
|
||||
let e = createEmbed("default", context, {
|
||||
author: {
|
||||
|
@ -36,6 +37,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'wikihow <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
try{
|
||||
|
|
|
@ -6,6 +6,8 @@ const { paginator } = require('../../../labscore/client');
|
|||
const { wolframAlpha } = require('../../../labscore/api');
|
||||
const { citation } = require('../../../labscore/utils/markdown');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
function getWolframSource(ref, sources){
|
||||
for(const s of Object.values(sources)){
|
||||
if(s.ref == ref) return s
|
||||
|
@ -52,6 +54,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'wolframalpha <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
|
|
|
@ -6,6 +6,8 @@ const { STATICS } = require('../../../labscore/utils/statics')
|
|||
const { paginator } = require('../../../labscore/client');
|
||||
const { youtube } = require('../../../labscore/api');
|
||||
|
||||
const { Permissions } = require("detritus-client/lib/constants");
|
||||
|
||||
// https://www.html-code-generator.com/javascript/shorten-long-numbers
|
||||
const intToString = num => {
|
||||
num = num.toString().replace(/[^0-9.]/g, '');
|
||||
|
@ -100,6 +102,7 @@ module.exports = {
|
|||
category: 'search',
|
||||
usage: 'youtube <query>'
|
||||
},
|
||||
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS],
|
||||
run: async (context, args) => {
|
||||
context.triggerTyping();
|
||||
if(!args.query) return editOrReply(context, {embeds:[createEmbed("warning", context, `Missing Parameter (query).`)]})
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue