- properly handle permissions for user commands

- add central permission group constant
This commit is contained in:
bignutty 2024-12-08 14:49:57 +01:00
parent dcb823a0a1
commit d2aeecf70d
100 changed files with 245 additions and 942 deletions

View file

@ -1,15 +1,12 @@
const { dictionary } = require('#api');
const { paginator } = require('#client');
const { TRANSLATE_LANGUAGE_MAPPINGS, DICTIONARY_LANGUAGES } = require('#constants');
const { TRANSLATE_LANGUAGE_MAPPINGS, DICTIONARY_LANGUAGES, PERMISSION_GROUPS } = require('#constants');
const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed')
const { link, iconPill, smallPill, icon, iconLinkPill, pill } = require('#utils/markdown')
const { editOrReply } = require('#utils/message')
const { dictionaryGetCodeFromAny } = require('#utils/translate');
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
const LABELS = {
"offensive": `${iconPill("warning", "Offensive")}`
}
@ -65,7 +62,7 @@ module.exports = {
args: [
{name: 'lang', default: 'en', type: 'language', help: "Language to define in"},
],
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
context.triggerTyping();

View file

@ -1,5 +1,5 @@
const { emojipedia, emojiKitchen } = require("#api");
const { EMOJIPEDIA_PLATFORM_TYPES, EMOJIPEDIA_PLATFORM_TYPE_ALIASES } = require("#constants");
const { EMOJIPEDIA_PLATFORM_TYPES, EMOJIPEDIA_PLATFORM_TYPE_ALIASES, PERMISSION_GROUPS } = require("#constants");
const { ingest } = require("#logging");
const { createEmbed } = require("#utils/embed");
@ -9,8 +9,7 @@ const { STATICS, STATIC_ASSETS } = require("#utils/statics");
const { Utils } = require("detritus-client");
const { Components, Snowflake } = require("detritus-client/lib/utils");
// TODO: Turn this into a general purpose permissions constant
const { Permissions, InteractionCallbackTypes, DiscordRegexNames } = require("detritus-client/lib/constants");
const { InteractionCallbackTypes, DiscordRegexNames } = require("detritus-client/lib/constants");
const { bold } = require("detritus-client/lib/utils/markup");
const onlyEmoji = require('emoji-aware').onlyEmoji;
@ -51,7 +50,7 @@ module.exports = {
args: [
{name: 'type', default: 'twitter', type: 'string', help: `Emoji platform type`}
],
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.READ_MESSAGE_HISTORY, Permissions.USE_EXTERNAL_EMOJIS],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
await context.triggerTyping()
let msg = context.message;

View file

@ -1,12 +1,12 @@
const { emojipedia } = require("#api");
const { PERMISSION_GROUPS } = require("#constants");
const { createEmbed } = require("#utils/embed");
const { pill, smallIconPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { STATICS, STATIC_ASSETS } = require("#utils/statics");
// TODO: Turn this into a general purpose permissions constant
const { Permissions, InteractionCallbackTypes, MessageComponentButtonStyles } = require("detritus-client/lib/constants");
const { InteractionCallbackTypes, MessageComponentButtonStyles } = require("detritus-client/lib/constants");
const { Components } = require("detritus-client/lib/utils");
const onlyEmoji = require('emoji-aware').onlyEmoji;
@ -43,7 +43,7 @@ module.exports = {
usage: 'emojipedia <emoji>',
slashCommand: "emojipedia"
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.READ_MESSAGE_HISTORY, Permissions.USE_EXTERNAL_EMOJIS],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
await context.triggerTyping()
let msg = context.message;

View file

@ -1,11 +1,10 @@
const { REXTESTER_LANGUAGES, COLORS, REXTESTER_COMPILER_ARGS } = require("#constants");
const { REXTESTER_LANGUAGES, COLORS, REXTESTER_COMPILER_ARGS, PERMISSION_GROUPS } = require("#constants");
const { createEmbed } = require("#utils/embed");
const { codeblock, highlight } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
// TODO: Turn this into a general purpose permissions constant
const { DiscordRegexNames, Permissions } = require("detritus-client/lib/constants");
const { DiscordRegexNames } = require("detritus-client/lib/constants");
const { Utils } = require("detritus-client");
const superagent = require('superagent')
@ -23,7 +22,7 @@ module.exports = {
args: [
{name: 'lang', default: 'node'}
],
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
context.triggerTyping();

View file

@ -1,14 +1,11 @@
const { paginator } = require("#client");
const { COLORS } = require("#constants");
const { COLORS, PERMISSION_GROUPS } = require("#constants");
const { createEmbed, page, formatPaginationEmbeds } = require("#utils/embed");
const { codeblock, pill, smallIconPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { STATIC_ICONS } = require("#utils/statics");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
const superagent = require('superagent');
const TEX_REGEX = /(\$\$?.*?\$\$?)/g
@ -24,7 +21,7 @@ module.exports = {
category: 'utils',
usage: 'latex <expression> [-i]'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.READ_MESSAGE_HISTORY, Permissions.USE_EXTERNAL_EMOJIS],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
context.triggerTyping();

View file

@ -1,4 +1,5 @@
const { googleVisionOcr } = require("#api");
const { PERMISSION_GROUPS } = require("#constants");
const { getRecentImage } = require("#utils/attachment");
const { createEmbed } = require("#utils/embed");
@ -6,9 +7,6 @@ const { codeblock, smallIconPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { STATICS } = require("#utils/statics");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'ocr',
metadata: {
@ -18,7 +16,7 @@ module.exports = {
usage: 'ocr <attachment>',
slashCommand: "OCR"
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.READ_MESSAGE_HISTORY, Permissions.USE_EXTERNAL_EMOJIS],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context) => {
context.triggerTyping();
let image = await getRecentImage(context, 50)

View file

@ -1,5 +1,5 @@
const { googleVisionOcr, googleTranslate } = require("#api");
const { TRANSLATE_LANGUAGES, TRANSLATE_DISPLAY_MAPPINGS } = require("#constants");
const { TRANSLATE_LANGUAGES, TRANSLATE_DISPLAY_MAPPINGS, PERMISSION_GROUPS } = require("#constants");
const { getRecentImage } = require("#utils/attachment");
const { createEmbed } = require("#utils/embed");
@ -8,9 +8,6 @@ const { editOrReply } = require("#utils/message");
const { STATICS } = require("#utils/statics");
const { isSupported, getCodeFromAny } = require('#utils/translate');
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'ocrtr',
label: 'to',
@ -26,7 +23,7 @@ module.exports = {
args: [
{name: 'from', default: 'auto', type: 'string', help: "Language to translate from"}
],
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.READ_MESSAGE_HISTORY, Permissions.USE_EXTERNAL_EMOJIS],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
context.triggerTyping();

View file

@ -4,10 +4,8 @@ const { editOrReply } = require('#utils/message')
const { codeblock, icon, smallIconPill } = require('#utils/markdown');
const { STATICS } = require('#utils/statics');
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
const superagent = require('superagent');
const { PERMISSION_GROUPS } = require("#constants");
module.exports = {
name: 'qr',
@ -20,7 +18,7 @@ module.exports = {
category: 'utils',
usage: `qr <contents>`
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.READ_MESSAGE_HISTORY, Permissions.ATTACH_FILES, Permissions.USE_EXTERNAL_EMOJIS],
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
// If we have an argument, generate code

View file

@ -1,11 +1,9 @@
const { PERMISSION_GROUPS } = require("#constants");
const { WebUtilsWebPageScreenshot} = require("#obelisk");
const { createEmbed } = require("#utils/embed");
const { editOrReply } = require("#utils/message");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
label: "url",
name: "screenshot",
@ -18,7 +16,7 @@ module.exports = {
usage: 'screenshot <url>',
slashCommand: "screenshot"
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.ATTACH_FILES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if (!args.url) return editOrReply(context, createEmbed("warning", context, "No url supplied."))

View file

@ -1,5 +1,5 @@
const { googleTranslate } = require('#api');
const { TRANSLATE_LANGUAGES, TRANSLATE_DISPLAY_MAPPINGS } = require('#constants');
const { TRANSLATE_LANGUAGES, TRANSLATE_DISPLAY_MAPPINGS, PERMISSION_GROUPS } = require('#constants');
const { createEmbed } = require('#utils/embed')
const { codeblock, icon, pill, stringwrap, smallIconPill } = require('#utils/markdown');
@ -7,9 +7,6 @@ const { editOrReply } = require('#utils/message')
const { STATICS } = require('#utils/statics');
const { isSupported, getCodeFromAny } = require('#utils/translate');
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'translate',
label: 'text',
@ -25,7 +22,7 @@ module.exports = {
{name: 'to', default: 'en', type: 'language', help: "Target Language"},
{name: 'from', default: 'auto', type: 'language', help: "Source Language"}
],
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.READ_MESSAGE_HISTORY, Permissions.USE_EXTERNAL_EMOJIS],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
await context.triggerTyping();

View file

@ -1,14 +1,12 @@
const { darksky } = require('#api');
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, page } = require('#utils/embed')
const { pill, iconPill, smallPill, weatherIcon, timestamp, icon, link, stringwrap} = require('#utils/markdown');
const { editOrReply } = require('#utils/message')
const { STATICS } = require('#utils/statics');
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
const modifiers = {
"°C": (i)=>i,
"°F": (i)=>(i*(9/5))+32,
@ -114,7 +112,7 @@ module.exports = {
args: [
{name: 't', default: 'celcius', type: 'units', help: "Temperature Units to use."},
],
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
context.triggerTyping();
if(!args.query) return editOrReply(context, createEmbed("warning", context, `Missing Parameter (location).`))