- 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

@ -2,12 +2,10 @@ const { createEmbed } = require("#utils/embed");
const { icon, highlight, link, stringwrap } = require('#utils/markdown');
const { editOrReply } = require("#utils/message");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
const superagent = require('superagent');
const { Routes } = require('detritus-client-rest/lib/endpoints');
const { PERMISSION_GROUPS } = require("#constants");
const applicationFlags = {
EMBEDDED_RELEASED: 1,
@ -48,7 +46,7 @@ module.exports = {
category: 'info',
usage: 'appinfo <application id>'
},
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();
let id;

View file

@ -1,13 +1,11 @@
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, page } = require("#utils/embed");
const { icon } = require('#utils/markdown');
const { editOrReply } = require("#utils/message");
const { getUser, getUserAvatar } = require("#utils/users");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'avatar',
label: 'user',
@ -20,7 +18,7 @@ module.exports = {
usage: 'avatar [<user>]',
slashCommmand: 'avatar'
},
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.user) args.user = context.userId;

View file

@ -1,13 +1,11 @@
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, page } = require("#utils/embed");
const { icon } = require('#utils/markdown');
const { editOrReply } = require("#utils/message");
const { getUser } = require("#utils/users");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'banner',
label: 'user',
@ -20,7 +18,7 @@ module.exports = {
usage: 'avatar [<user>]',
slashCommmand: 'banner'
},
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.user) args.user = context.userId;

View file

@ -1,13 +1,11 @@
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { createEmbed, page, formatPaginationEmbeds } = require("#utils/embed");
const { guildFeaturesField } = require("#utils/fields");
const { icon, highlight, timestamp, codeblock, smallIconPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'server',
label: 'user',
@ -18,7 +16,7 @@ module.exports = {
category: 'info',
usage: 'server'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context) => {
try{
const emojis = context.message.guild.emojis

View file

@ -1,9 +1,7 @@
const { PERMISSION_GROUPS } = require('#constants');
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 = {
name: 'serverbanner',
aliases: ["guildbanner", "gb", "sb", "groupbanner"],
@ -13,7 +11,7 @@ module.exports = {
category: 'info',
usage: 'serverbanner'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context) => {
context.triggerTyping();
if (!context.guild.bannerUrl) return editOrReply(context, createEmbed("warning", context, "Server doesn't have a banner set."))

View file

@ -1,9 +1,7 @@
const { PERMISSION_GROUPS } = require('#constants');
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 = {
name: 'servericon',
aliases: ["guildicon", "gi", "si", "groupicon"],
@ -13,7 +11,7 @@ module.exports = {
category: 'info',
usage: 'servericon'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context) => {
context.triggerTyping();
if (!context.guild.iconUrl) return editOrReply(context, createEmbed("warning", context, "Server doesn't have an icon."))

View file

@ -1,5 +1,5 @@
const { paginator } = require('#client');
const { DISCORD_INVITES, OPEN_SOURCE_REPOSITORY_URL } = require("#constants");
const { DISCORD_INVITES, OPEN_SOURCE_REPOSITORY_URL, PERMISSION_GROUPS } = require("#constants");
const { createEmbed, formatPaginationEmbeds, page } = require("#utils/embed");
const { guildFeaturesField } = require("#utils/fields");
@ -7,9 +7,6 @@ const { icon, highlight, timestamp, iconPill, iconLinkPill, link } = require("#u
const { editOrReply } = require("#utils/message");
const { STATIC_ASSETS } = require("#utils/statics");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
module.exports = {
name: 'invite',
label: 'invite',
@ -21,7 +18,7 @@ module.exports = {
category: 'info',
usage: 'invite <invite code>'
},
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.invite) return editOrReply(context, {

View file

@ -1,13 +1,11 @@
const { paginator } = require('#client');
const { PERMISSION_GROUPS } = require('#constants');
const { PERMISSION_CATEGORIES, PERMISSIONS_TEXT } = require('#permissions');
const { createEmbed, page, formatPaginationEmbeds } = require("#utils/embed");
const { guildFeaturesField } = require("#utils/fields");
const { icon, highlight, timestamp, codeblock, iconPill, smallPill, pill } = require("#utils/markdown");
const { icon, iconPill, smallPill, pill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
// TODO: Turn this into a general purpose permissions constant
const { Permissions } = require("detritus-client/lib/constants");
const { PermissionTools } = require('detritus-client/lib/utils');
// TODO: Move this to a utility module
@ -96,7 +94,7 @@ module.exports = {
category: 'info',
usage: 'role <name|id>'
},
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
permissionsClient: [...PERMISSION_GROUPS.baseline],
run: async (context, args) => {
let r = context.guild.roles.filter((r)=>r.name.toLowerCase().includes(args.query.toLowerCase()) || r.id == args.query)[0]
@ -146,9 +144,7 @@ module.exports = {
pages.push(page(newPage))
}
await paginator.createPaginator({
context,
pages: formatPaginationEmbeds(pages)

View file

@ -1,13 +1,12 @@
const { paginator } = require("#client");
const { BADGE_ICONS } = require("#constants");
const { PERMISSION_GROUPS } = require("#constants");
const { createEmbed, page } = require("#utils/embed");
const { icon, highlight, timestamp, smallIconPill, smallPill } = require("#utils/markdown");
const { editOrReply } = require("#utils/message");
const { getUser, renderBadges, getUserAvatar } = require("#utils/users");
// TODO: Turn this into a general purpose permissions constant
const { UserFlags, Permissions } = require("detritus-client/lib/constants");
const { UserFlags } = require("detritus-client/lib/constants");
module.exports = {
name: 'user',
@ -21,7 +20,7 @@ module.exports = {
usage: 'user [<user>]',
slashCommand: 'user'
},
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();
try{