- 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 { webAsk } = require('#obelisk');
const { createEmbed } = require('#utils/embed')
@ -6,9 +7,6 @@ const { editOrReply } = require('#utils/message')
const { STATIC_ICONS } = require('#utils/statics');
const { hasFeature } = require('#utils/testing');
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
// TODO: general purpose constant?
const URL_REGEX = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([^> \n]*)/
@ -22,7 +20,7 @@ module.exports = {
category: 'limited',
usage: 'ask <question>'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
if(!await hasFeature(context, "flamingo/summary")) return;
context.triggerTyping();

View file

@ -1,13 +1,11 @@
const { emogen } = require("#api");
const { PERMISSION_GROUPS } = require("#constants");
const { createEmbed } = require("#utils/embed");
const { iconPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { hasFeature } = require("#utils/testing");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'emogen',
label: 'text',
@ -21,7 +19,7 @@ module.exports = {
args: [
{ name: 'style', default: 'microsoft', required: false, help: "Emogen Style" }
],
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/imagen")) return;
context.triggerTyping();

View file

@ -1,3 +1,4 @@
const { PERMISSION_GROUPS } = require("#constants");
const { LlmModelsGenerate } = require("#obelisk");
const { createEmbed } = require("#utils/embed");
@ -6,9 +7,6 @@ const { editOrReply } = require("#utils/message");
const { STATIC_ICONS } = require("#utils/statics");
const { hasFeature } = require("#utils/testing");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'gemini-pro',
label: 'text',
@ -20,7 +18,7 @@ module.exports = {
category: 'limited',
usage: 'gemini-pro <prompt>'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/gemini/text")) return;
context.triggerTyping();

View file

@ -1,3 +1,4 @@
const { PERMISSION_GROUPS } = require("#constants");
const { geminiVision } = require("#obelisk");
const { getRecentImage } = require("#utils/attachment");
@ -7,9 +8,6 @@ const { editOrReply } = require("#utils/message");
const { STATIC_ICONS } = require("#utils/statics");
const { hasFeature } = require("#utils/testing");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'gemini-vision',
label: 'text',
@ -21,7 +19,7 @@ module.exports = {
category: 'limited',
usage: 'gemini-vision <attachment> <prompt>'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/gemini/vision")) return;
context.triggerTyping();

View file

@ -1,3 +1,4 @@
const { PERMISSION_GROUPS } = require('#constants');
const { LlmPrivateBard } = require('#obelisk');
const { createEmbed } = require('#utils/embed')
@ -6,8 +7,7 @@ const { editOrReply } = require('#utils/message')
const { STATIC_ICONS } = require('#utils/statics');
const { hasFeature } = require('#utils/testing');
// TODO: Turn this into a general purpose permissions constant
const { Permissions, InteractionCallbackTypes } = require("detritus-client/lib/constants");
const { InteractionCallbackTypes } = require("detritus-client/lib/constants");
const { Components } = require('detritus-client/lib/utils');
module.exports = {
@ -22,7 +22,7 @@ module.exports = {
usage: 'gemini <input>'
},
args: [],
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(!await hasFeature(context, "ai/bard")) return;

View file

@ -1,4 +1,5 @@
const { gpt } = require('#api');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed } = require('#utils/embed')
const { editOrReply } = require('#utils/message')
@ -6,8 +7,6 @@ const { iconPill, stringwrap, smallIconPill } = require('#utils/markdown')
const { STATICS, STATIC_ASSETS } = require('#utils/statics');
const { hasFeature } = require('#utils/testing');
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'gpt',
@ -24,7 +23,7 @@ module.exports = {
{ name: 'prompt', default: '', required: false, help: "The starting system prompt." },
// { name: 'temperature', default: 0.25, required: false, help: "Model temperature." },
],
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(!await hasFeature(context, "ai/gpt")) return;

View file

@ -1,3 +1,4 @@
const { PERMISSION_GROUPS } = require("#constants");
const { GenerativeImagesModelsImagen } = require("#obelisk");
const { createEmbed } = require("#utils/embed");
@ -6,9 +7,6 @@ const { editOrReply } = require("#utils/message");
const { STATIC_ICONS, STATIC_ASSETS } = require("#utils/statics");
const { hasFeature } = require("#utils/testing");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'imagen',
label: 'text',
@ -20,7 +18,7 @@ module.exports = {
category: 'limited',
usage: 'imagen <prompt>'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/imagen")) return;
context.triggerTyping();

View file

@ -1,4 +1,5 @@
const { palm2 } = require('#obelisk');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed } = require('#utils/embed')
const { editOrReply } = require('#utils/message')
@ -6,9 +7,6 @@ const { iconPill, stringwrap, smallIconPill } = require('#utils/markdown')
const { STATIC_ICONS } = require('#utils/statics');
const { hasFeature } = require('#utils/testing');
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'palm',
label: 'text',
@ -24,7 +22,7 @@ module.exports = {
{ name: 'prompt', default: '', required: false, help: "The starting system prompt." },
{ name: 'temperature', default: 0.25, required: false, help: "Model temperature." },
],
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(!await hasFeature(context, "ai/palm")) return;

View file

@ -1,3 +1,4 @@
const { PERMISSION_GROUPS } = require('#constants');
const { SparkWebSummarize } = require('#obelisk');
const { createEmbed } = require('#utils/embed')
@ -6,9 +7,6 @@ const { editOrReply } = require('#utils/message')
const { STATIC_ICONS } = require('#utils/statics');
const { hasFeature } = require('#utils/testing');
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
// TODO: general purpose constant? regex util?
const URL_REGEX = /https?:\/\/(www\.)?[-a-zA-Z0-9@:%._+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([^> \n]*)/
@ -23,7 +21,7 @@ module.exports = {
category: 'limited',
usage: 'summarize'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
if(!await hasFeature(context, "flamingo/summary")) return;
context.triggerTyping();

View file

@ -1,3 +1,4 @@
const { PERMISSION_GROUPS } = require("#constants");
const { wallpaper } = require("#obelisk");
const { createEmbed } = require("#utils/embed");
@ -6,9 +7,6 @@ const { editOrReply } = require("#utils/message");
const { STATIC_ICONS, STATIC_ASSETS } = require("#utils/statics");
const { hasFeature } = require("#utils/testing");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'wallpaper',
label: 'text',
@ -23,7 +21,7 @@ module.exports = {
args: [
{ name: 'format', default: 'wide', required: false, help: "Image style (wide, square)." }
],
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.ATTACH_FILES, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline, ...PERMISSION_GROUPS.attachments],
run: async (context, args) => {
if(!await hasFeature(context, "ai/wallpapers")) return;
context.triggerTyping();