- 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,3 +1,4 @@
const { PERMISSION_GROUPS } = require('#constants');
const { renderMusicButtons } = require('#utils/buttons');
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -22,7 +23,7 @@ module.exports = {
],
run: async (context, args) => {
try{
await acknowledge(context);
await acknowledge(context, false, [...PERMISSION_GROUPS.baseline_slash]);
const { message } = args;

View file

@ -1,5 +1,5 @@
const { googleVisionOcr, googleTranslate } = require('#api');
const { TRANSLATE_DISPLAY_MAPPINGS, TRANSLATE_LANGUAGES } = require('#constants');
const { TRANSLATE_DISPLAY_MAPPINGS, TRANSLATE_LANGUAGES, PERMISSION_GROUPS } = require('#constants');
const { getMessageAttachment, validateAttachment } = require('#utils/attachment');
const { createEmbed } = require('#utils/embed');
@ -24,7 +24,7 @@ module.exports = {
],
run: async (context, args) => {
try{
await acknowledge(context);
await acknowledge(context, false, [...PERMISSION_GROUPS.baseline_slash]);
const { message } = args;

View file

@ -1,5 +1,6 @@
const { reverseImageSearch } = require('#api');
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { getMessageAttachment, validateAttachment } = require('#utils/attachment');
const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed');
@ -46,7 +47,7 @@ module.exports = {
],
run: async (context, args) => {
try{
await acknowledge(context);
await acknowledge(context, false, [...PERMISSION_GROUPS.baseline_slash]);
const { message } = args;

View file

@ -7,6 +7,7 @@ const { codeblock } = require('#utils/markdown');
const { STATICS } = require('#utils/statics');
const { ApplicationCommandTypes, MessageFlags } = require("detritus-client/lib/constants");
const { PERMISSION_GROUPS } = require('#constants');
;
module.exports = {
@ -21,7 +22,7 @@ module.exports = {
1
],
run: async (context, args) => {
await acknowledge(context);
await acknowledge(context, false, [...PERMISSION_GROUPS.baseline_slash]);
try {
const { message } = args;

View file

@ -1,5 +1,5 @@
const { googleTranslate } = require('#api');
const { TRANSLATE_DISPLAY_MAPPINGS, TRANSLATE_LANGUAGES, TRANSLATE_LANGUAGE_MAPPINGS, TRANSLATE_DEFAULT_LANGUAGE_LIST } = require('#constants');
const { TRANSLATE_DISPLAY_MAPPINGS, TRANSLATE_LANGUAGES, TRANSLATE_LANGUAGE_MAPPINGS, TRANSLATE_DEFAULT_LANGUAGE_LIST, PERMISSION_GROUPS } = require('#constants');
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -22,7 +22,7 @@ module.exports = {
1
],
run: async (context, args) => {
await acknowledge(context);
await acknowledge(context, false, [...PERMISSION_GROUPS.baseline_slash]);
const { message } = args;

View file

@ -1,4 +1,5 @@
const { otter } = require('#api');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -27,7 +28,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try{
const ott = (await otter()).response.body

View file

@ -1,3 +1,4 @@
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
const { editOrReply } = require('#utils/message');
@ -32,7 +33,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
if(!args.user) return editOrReply(context, createEmbed("default", context, {
image: {

View file

@ -1,4 +1,4 @@
const { BADGE_ICONS } = require('#constants');
const { BADGE_ICONS, PERMISSION_GROUPS } = require('#constants');
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -35,7 +35,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try{
const { user, member } = args;

View file

@ -1,5 +1,6 @@
const { googleImages } = require('#api');
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -57,7 +58,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try {
let search = await googleImages(context, args.query, false) //safesearch is always on

View file

@ -1,5 +1,6 @@
const { google } = require('#api');
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { format } = require('#utils/ansi');
const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed');
@ -260,7 +261,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try{
let search = await google(context, args.query, false) // safe search is always on

View file

@ -1,5 +1,6 @@
const { lyrics } = require('#api');
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -93,7 +94,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try{
let search = await lyrics(context, args.query)

View file

@ -1,4 +1,5 @@
const { maps, mapsSupplemental } = require('#api');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -7,7 +8,6 @@ const { editOrReply } = require('#utils/message')
const { STATICS, STATIC_ASSETS } = require('#utils/statics');
const { ApplicationCommandOptionTypes } = require('detritus-client/lib/constants');
// TODO: Turn this into a general purpose permissions constant
const { Components } = require('detritus-client/lib/utils');
function renderPlaceCard(context, place) {
@ -108,7 +108,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try {
let search = await maps(context, args.query)

View file

@ -1,5 +1,6 @@
const { urbandictionary } = require('#api');
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -7,8 +8,7 @@ const { link, iconPill } = require('#utils/markdown')
const { editOrReply } = require('#utils/message')
const { STATICS } = require('#utils/statics')
// TODO: Turn this into a general purpose permissions constant
const { Permissions, ApplicationCommandOptionTypes } = require("detritus-client/lib/constants");
const { ApplicationCommandOptionTypes } = require("detritus-client/lib/constants");
function createUrbanPage(context, result){
let e = createEmbed("default", context, {
@ -64,7 +64,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try{
let search = await urbandictionary(context, args.term)

View file

@ -1,5 +1,6 @@
const { wolframAlpha } = require('#api');
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -67,7 +68,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try {
let search = await wolframAlpha(context, args.query)

View file

@ -1,4 +1,5 @@
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -35,7 +36,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
if(!isNaN(parseInt(args.query))){
try{

View file

@ -1,6 +1,6 @@
const { youtube } = require('#api');
const { paginator } = require('#client');
const { YOUTUBE_CATEGORIES } = require('#constants');
const { YOUTUBE_CATEGORIES, PERMISSION_GROUPS } = require('#constants');
const { createEmbed, formatPaginationEmbeds, page } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -180,7 +180,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try{
if(!args.type) args.type="all"

View file

@ -1,6 +1,6 @@
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 { acknowledge } = require('#utils/interactions');
@ -76,7 +76,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try{
let search = await dictionary(context, args.term, "en")

View file

@ -11,6 +11,7 @@ const { ingest } = require("#logging");
const { Utils } = require("detritus-client");
const { InteractionCallbackTypes, ApplicationCommandOptionTypes, DiscordRegexNames } = require("detritus-client/lib/constants");
const { Components, Snowflake } = require("detritus-client/lib/utils");
const { PERMISSION_GROUPS } = require("#constants");
const onlyEmoji = require('emoji-aware').onlyEmoji;
@ -64,7 +65,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
const { matches } = Utils.regex(
DiscordRegexNames.EMOJI,

View file

@ -8,6 +8,7 @@ const { STATICS, STATIC_ASSETS } = require("#utils/statics");
const { Components } = require("detritus-client/lib/utils");
const { InteractionCallbackTypes, MessageComponentButtonStyles, ApplicationCommandOptionTypes } = require("detritus-client/lib/constants");
const { acknowledge } = require("#utils/interactions");
const { PERMISSION_GROUPS } = require("#constants");
const onlyEmoji = require('emoji-aware').onlyEmoji;
@ -59,7 +60,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
const emoji = onlyEmoji(args.emoji)
if(!emoji){

View file

@ -1,3 +1,4 @@
const { PERMISSION_GROUPS } = require('#constants');
const { renderMusicButtons } = require('#utils/buttons');
const { createEmbed } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -37,7 +38,7 @@ module.exports = {
],
run: async (context, args) => {
try{
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
let urls = args.url.match(urlr)
if(urls){

View file

@ -1,4 +1,5 @@
const { googleVisionOcr } = require("#api");
const { PERMISSION_GROUPS } = require("#constants");
const { validateAttachment } = require("#utils/attachment");
const { createEmbed } = require("#utils/embed");
@ -36,7 +37,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
if(!validateAttachment(args.image, "image")) return await editOrReply(context, createEmbed("warning", context, "Unsupported attachment type."))

View file

@ -1,5 +1,6 @@
const { reverseImageSearch } = require("#api");
const { paginator } = require("#client");
const { PERMISSION_GROUPS } = require("#constants");
const { validateAttachment } = require("#utils/attachment");
const { createEmbed, formatPaginationEmbeds, page } = require("#utils/embed");
@ -55,7 +56,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
if(!validateAttachment(args.image, "image")) return await editOrReply(context, createEmbed("warning", context, "Unsupported attachment type."))

View file

@ -1,3 +1,4 @@
const { PERMISSION_GROUPS } = require("#constants");
const { WebUtilsWebPageScreenshot} = require("#obelisk");
const { createEmbed } = require("#utils/embed");
@ -33,7 +34,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash, PERMISSION_GROUPS.attachments]);
await editOrReply(context, createEmbed("loading", context, `Creating website screenshot...`))

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 } = require('#utils/markdown');
@ -51,7 +51,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
if(!args.to) args.to = "en";
if(!args.from) args.from = "auto";

View file

@ -1,5 +1,6 @@
const { darksky } = require('#api');
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, page } = require('#utils/embed');
const { acknowledge } = require('#utils/interactions');
@ -7,7 +8,7 @@ const { pill, iconPill, smallPill, weatherIcon, timestamp, icon, link, stringwra
const { editOrReply } = require('#utils/message');
const { STATICS } = require('#utils/statics');
const { ApplicationCommandOptionTypes } = require('detritus-client/lib/constants');
const { ApplicationCommandOptionTypes, ApplicationIntegrationTypes, InteractionContextTypes } = require('detritus-client/lib/constants');
const modifiers = {
"°C": (i)=>i,
@ -94,12 +95,13 @@ module.exports = {
name: 'weather',
description: 'Check the weather at a location.',
contexts: [
0,
1,
2
InteractionContextTypes.GUILD,
InteractionContextTypes.PRIVATE_CHANNEL,
InteractionContextTypes.BOT_DM
],
integrationTypes: [
1
ApplicationIntegrationTypes.GUILD_INSTALL,
ApplicationIntegrationTypes.USER_INSTALL
],
options: [
{
@ -137,7 +139,7 @@ module.exports = {
}
],
run: async (context, args) => {
await acknowledge(context, args.incognito);
await acknowledge(context, args.incognito, [...PERMISSION_GROUPS.baseline_slash]);
try{
let data = await darksky(context, args.location)