mirror of
https://gitlab.com/bignutty/labscore.git
synced 2025-06-08 06:03:04 -04:00
test role command
This commit is contained in:
parent
cd624c9066
commit
1b81417b57
5 changed files with 286 additions and 38 deletions
156
commands/message/info/role.js
Normal file
156
commands/message/info/role.js
Normal file
|
@ -0,0 +1,156 @@
|
||||||
|
const { paginator } = require('#client');
|
||||||
|
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 { 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
|
||||||
|
function toCodePoint(unicodeSurrogates, sep) {
|
||||||
|
var
|
||||||
|
r = [],
|
||||||
|
c = 0,
|
||||||
|
p = 0,
|
||||||
|
i = 0;
|
||||||
|
while (i < unicodeSurrogates.length) {
|
||||||
|
c = unicodeSurrogates.charCodeAt(i++);
|
||||||
|
if (p) {
|
||||||
|
r.push((0x10000 + ((p - 0xD800) << 10) + (c - 0xDC00)).toString(16));
|
||||||
|
p = 0;
|
||||||
|
} else if (0xD800 <= c && c <= 0xDBFF) {
|
||||||
|
p = c;
|
||||||
|
} else {
|
||||||
|
r.push(c.toString(16));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return r.join(sep || '-');
|
||||||
|
}
|
||||||
|
|
||||||
|
const DEFAULT_ROLE_COLOR = "99AAB5"
|
||||||
|
|
||||||
|
const PERMISSION_CATEGORY = [
|
||||||
|
[
|
||||||
|
{
|
||||||
|
label: "General Server Permissions",
|
||||||
|
icon: icon("shield"),
|
||||||
|
permissions: PERMISSION_CATEGORIES.GENERAL_SERVER
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
label: "Membership Permissions",
|
||||||
|
icon: icon("mod"),
|
||||||
|
permissions: PERMISSION_CATEGORIES.MEMBERSHIP_PERMISSIONS
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
label: "Text Channel Permissions",
|
||||||
|
icon: icon("shield"),
|
||||||
|
permissions: PERMISSION_CATEGORIES.TEXT_CHANNEL_PERMISSIONS
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
label: "Voice Channel Permissions",
|
||||||
|
icon: icon("shield"),
|
||||||
|
permissions: PERMISSION_CATEGORIES.VOICE_CHANNEL_PERMISSIONS
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Apps Permissions",
|
||||||
|
icon: icon("robot"),
|
||||||
|
permissions: PERMISSION_CATEGORIES.APPS_PERMISSIONS
|
||||||
|
}
|
||||||
|
],
|
||||||
|
[
|
||||||
|
{
|
||||||
|
label: "Events Permissions",
|
||||||
|
icon: icon("calendar"),
|
||||||
|
permissions: PERMISSION_CATEGORIES.EVENTS_PERMISSIONS
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Stage Channel Permissions",
|
||||||
|
icon: icon("calendar"),
|
||||||
|
permissions: PERMISSION_CATEGORIES.STAGE_CHANNEL_PERMISSIONS
|
||||||
|
},
|
||||||
|
{
|
||||||
|
label: "Advanced Permissions",
|
||||||
|
icon: icon("calendar"),
|
||||||
|
permissions: PERMISSION_CATEGORIES.ADVANCED_PERMISSIONS
|
||||||
|
}
|
||||||
|
]
|
||||||
|
]
|
||||||
|
|
||||||
|
module.exports = {
|
||||||
|
name: 'role',
|
||||||
|
label: 'query',
|
||||||
|
aliases: ['roleinfo'],
|
||||||
|
metadata: {
|
||||||
|
description: 'Displays information about a role in the server.',
|
||||||
|
description_short: 'Information about roles',
|
||||||
|
category: 'info',
|
||||||
|
usage: 'role <name|id>'
|
||||||
|
},
|
||||||
|
permissionsClient: [Permissions.EMBED_LINKS, Permissions.SEND_MESSAGES, Permissions.USE_EXTERNAL_EMOJIS, Permissions.READ_MESSAGE_HISTORY],
|
||||||
|
run: async (context, args) => {
|
||||||
|
let r = context.guild.roles.filter((r)=>r.name.toLowerCase().includes(args.query.toLowerCase()) || r.id == args.query)[0]
|
||||||
|
|
||||||
|
if(!r) return await editOrReply(context, createEmbed("warning", context, "No roles matched your query."))
|
||||||
|
|
||||||
|
let pages = [];
|
||||||
|
|
||||||
|
let rolePage = createEmbed("default", context, {
|
||||||
|
author: {
|
||||||
|
name: r.name
|
||||||
|
},
|
||||||
|
description: `${smallPill("ID ")} ${pill(r.id)}\n${smallPill("Position ")} ${pill(`${r.position}/${context.guild.roles.length}`)}\n${smallPill("Hoisted ")} ${pill(`${r.hoist}`)}`
|
||||||
|
})
|
||||||
|
|
||||||
|
if(r.color === 0) rolePage.author.iconUrl = `https://lh3.googleusercontent.com/akBt-2Rz3efGuxAnOoSJbGuaqxZuRAI7ZUYKBgYZLT4vsk34qVWoAm3o6--RxupzZpayLSRsxO1LCwBECyBT_giQ3xhLMR03z7xngvm4m9ZgQ2Gya1i-3Q=w256-h256-bc0x0055aa-fcrop64=1,0000000000010001-rj-b36-c0x${DEFAULT_ROLE_COLOR}`
|
||||||
|
else {
|
||||||
|
rolePage.description += `\n${smallPill("Color ")} ${pill("#" + r.color.toString(16))}`
|
||||||
|
rolePage.author.iconUrl = `https://lh3.googleusercontent.com/akBt-2Rz3efGuxAnOoSJbGuaqxZuRAI7ZUYKBgYZLT4vsk34qVWoAm3o6--RxupzZpayLSRsxO1LCwBECyBT_giQ3xhLMR03z7xngvm4m9ZgQ2Gya1i-3Q=w256-h256-bc0x0055aa-fcrop64=1,0000000000010001-rj-b36-c0x${r.color.toString(16)}`
|
||||||
|
}
|
||||||
|
|
||||||
|
if(r.unicode_emoji){
|
||||||
|
rolePage.thumbnail = {
|
||||||
|
url: `https://raw.githubusercontent.com/jdecked/twemoji/main/assets/72x72/${toCodePoint(r.unicode_emoji)}.png`
|
||||||
|
}
|
||||||
|
} else if(r.icon){
|
||||||
|
rolePage.thumbnail = {
|
||||||
|
url: r.iconUrl
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
let permSection;
|
||||||
|
// Render Permissions
|
||||||
|
for(const c of PERMISSION_CATEGORY){
|
||||||
|
permSection = [];
|
||||||
|
for(const section of c){
|
||||||
|
let sectionRender = `${iconPill(section.icon, section.label)}\n`
|
||||||
|
let permissionsRender = []
|
||||||
|
for(const p of section.permissions){
|
||||||
|
permissionsRender.push(`${PermissionTools.checkPermissions(r.permissions, p) ? icon("failiure_simple") : icon("success_simple")} ${PERMISSIONS_TEXT[p]}`)
|
||||||
|
}
|
||||||
|
permSection.push(sectionRender + permissionsRender.join("\n"))
|
||||||
|
}
|
||||||
|
|
||||||
|
let newPage = structuredClone(rolePage)
|
||||||
|
newPage.description += "\n\n" + permSection.join('\n\n');
|
||||||
|
|
||||||
|
pages.push(page(newPage))
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
await paginator.createPaginator({
|
||||||
|
context,
|
||||||
|
pages: formatPaginationEmbeds(pages)
|
||||||
|
});
|
||||||
|
},
|
||||||
|
};
|
|
@ -1,7 +1,9 @@
|
||||||
const { ClusterClient, CommandClient, InteractionCommandClient } = require('detritus-client');
|
const { ClusterClient, CommandClient, InteractionCommandClient } = require('detritus-client');
|
||||||
const { ActivityTypes, PresenceStatuses, GatewayIntents, Permissions, ClientEvents } = require('detritus-client/lib/constants');
|
const { ActivityTypes, PresenceStatuses, GatewayIntents, Permissions, ClientEvents } = require('detritus-client/lib/constants');
|
||||||
|
|
||||||
const { PERMISSIONS_TEXT, DEFAULT_BOT_NAME, DEFAULT_PREFIXES } = require('#constants');
|
const { DEFAULT_BOT_NAME, DEFAULT_PREFIXES } = require('#constants');
|
||||||
|
const { PERMISSIONS_TEXT } = require('#permissions');
|
||||||
|
|
||||||
const Paginator = require('./paginator').PaginatorCluster
|
const Paginator = require('./paginator').PaginatorCluster
|
||||||
|
|
||||||
const cluster = new ClusterClient("", {
|
const cluster = new ClusterClient("", {
|
||||||
|
|
|
@ -1063,43 +1063,6 @@ module.exports.REXTESTER_COMPILER_ARGS = Object.freeze({
|
||||||
"11": "-o a.out source_file.hs"
|
"11": "-o a.out source_file.hs"
|
||||||
})
|
})
|
||||||
|
|
||||||
const { Permissions } = require("detritus-client/lib/constants")
|
|
||||||
|
|
||||||
module.exports.PERMISSIONS_TEXT = Object.freeze({
|
|
||||||
[Permissions.ADD_REACTIONS]: "Add Reactions",
|
|
||||||
[Permissions.ADMINISTRATOR]: "Administrator",
|
|
||||||
[Permissions.ATTACH_FILES]: "Attach Files",
|
|
||||||
[Permissions.BAN_MEMBERS]: "Ban Members",
|
|
||||||
[Permissions.CHANGE_NICKNAME]: "Change Nickname",
|
|
||||||
[Permissions.CHANGE_NICKNAMES]: "Change Nicknames",
|
|
||||||
[Permissions.CONNECT]: "Connect",
|
|
||||||
[Permissions.CREATE_INSTANT_INVITE]: "Create Invites",
|
|
||||||
[Permissions.DEAFEN_MEMBERS]: "Deafen Members",
|
|
||||||
[Permissions.EMBED_LINKS]: "Embed Links",
|
|
||||||
[Permissions.KICK_MEMBERS]: "Kick Members",
|
|
||||||
[Permissions.MANAGE_CHANNELS]: "Manage Channels",
|
|
||||||
[Permissions.MANAGE_EMOJIS]: "Manage Emojis",
|
|
||||||
[Permissions.MANAGE_GUILD]: "Manage Guild",
|
|
||||||
[Permissions.MANAGE_MESSAGES]: "Manage Messages",
|
|
||||||
[Permissions.MANAGE_ROLES]: "Manage Roles",
|
|
||||||
[Permissions.MANAGE_WEBHOOKS]: "Manage Webhooks",
|
|
||||||
[Permissions.MENTION_EVERYONE]: "Mention Everyone",
|
|
||||||
[Permissions.MOVE_MEMBERS]: "Move Members",
|
|
||||||
[Permissions.MUTE_MEMBERS]: "Mute Members",
|
|
||||||
[Permissions.NONE]: "None",
|
|
||||||
[Permissions.PRIORITY_SPEAKER]: "Priority Speaker",
|
|
||||||
[Permissions.READ_MESSAGE_HISTORY]: "Read Message History",
|
|
||||||
[Permissions.SEND_MESSAGES]: "Send Messages",
|
|
||||||
[Permissions.SEND_TTS_MESSAGES]: "Text-To-Speech",
|
|
||||||
[Permissions.SPEAK]: "Speak",
|
|
||||||
[Permissions.STREAM]: "Go Live",
|
|
||||||
[Permissions.USE_EXTERNAL_EMOJIS]: "Use External Emojis",
|
|
||||||
[Permissions.USE_VAD]: "Voice Auto Detect",
|
|
||||||
[Permissions.VIEW_AUDIT_LOG]: "View Audit Logs",
|
|
||||||
[Permissions.VIEW_CHANNEL]: "View Channel",
|
|
||||||
[Permissions.VIEW_GUILD_ANALYTICS]: "View Server Insights"
|
|
||||||
});
|
|
||||||
|
|
||||||
module.exports.YOUTUBE_CATEGORIES = {
|
module.exports.YOUTUBE_CATEGORIES = {
|
||||||
"music": "10",
|
"music": "10",
|
||||||
"animals": "15",
|
"animals": "15",
|
||||||
|
|
126
labscore/permissions.js
Normal file
126
labscore/permissions.js
Normal file
|
@ -0,0 +1,126 @@
|
||||||
|
|
||||||
|
const { Permissions } = require("detritus-client/lib/constants")
|
||||||
|
|
||||||
|
module.exports.PERMISSIONS_TEXT = Object.freeze({
|
||||||
|
[Permissions.ADD_REACTIONS]: "Add Reactions",
|
||||||
|
[Permissions.ADMINISTRATOR]: "Administrator",
|
||||||
|
[Permissions.ATTACH_FILES]: "Attach Files",
|
||||||
|
[Permissions.BAN_MEMBERS]: "Ban Members",
|
||||||
|
[Permissions.CHANGE_NICKNAME]: "Change Nickname",
|
||||||
|
[Permissions.CHANGE_NICKNAMES]: "Manage Nicknames",
|
||||||
|
[Permissions.CONNECT]: "Connect",
|
||||||
|
[Permissions.CREATE_INSTANT_INVITE]: "Create Invites",
|
||||||
|
[Permissions.DEAFEN_MEMBERS]: "Deafen Members",
|
||||||
|
[Permissions.EMBED_LINKS]: "Embed Links",
|
||||||
|
[Permissions.KICK_MEMBERS]: "Kick Members",
|
||||||
|
[Permissions.MANAGE_CHANNELS]: "Manage Channels",
|
||||||
|
[1 << 30]: "Manage Expressions", //
|
||||||
|
[Permissions.MANAGE_GUILD]: "Manage Server",
|
||||||
|
[Permissions.MANAGE_MESSAGES]: "Manage Messages",
|
||||||
|
[Permissions.MANAGE_ROLES]: "Manage Roles",
|
||||||
|
[Permissions.MANAGE_WEBHOOKS]: "Manage Webhooks",
|
||||||
|
[Permissions.MENTION_EVERYONE]: "Mention Everyone",
|
||||||
|
[Permissions.MOVE_MEMBERS]: "Move Members",
|
||||||
|
[Permissions.MUTE_MEMBERS]: "Mute Members",
|
||||||
|
[Permissions.NONE]: "None",
|
||||||
|
[Permissions.PRIORITY_SPEAKER]: "Priority Speaker",
|
||||||
|
[Permissions.READ_MESSAGE_HISTORY]: "Read Message History",
|
||||||
|
[Permissions.SEND_MESSAGES]: "Send Messages",
|
||||||
|
[Permissions.SEND_TTS_MESSAGES]: "Text-To-Speech",
|
||||||
|
[Permissions.SPEAK]: "Speak",
|
||||||
|
[Permissions.STREAM]: "Video",
|
||||||
|
[Permissions.USE_EXTERNAL_EMOJIS]: "Use External Emojis",
|
||||||
|
[Permissions.USE_VAD]: "Voice Auto Detect",
|
||||||
|
[Permissions.VIEW_AUDIT_LOG]: "View Audit Logs",
|
||||||
|
[Permissions.VIEW_CHANNEL]: "View Channel",
|
||||||
|
[Permissions.VIEW_GUILD_ANALYTICS]: "View Server Insights",
|
||||||
|
[Permissions.MANAGE_EVENTS]: "Manage Events",
|
||||||
|
[Permissions.MANAGE_THREADS]: "Manage Threads",
|
||||||
|
[Permissions.REQUEST_TO_SPEAK]: "Request to Speak",
|
||||||
|
[Permissions.SEND_MESSAGES_IN_THREADS]: "Send Messages in Threads",
|
||||||
|
[Permissions.USE_APPLICATION_COMMANDS]: "Use Application Commands",
|
||||||
|
[Permissions.USE_EXTERNAL_STICKERS]: "Use External Stickers",
|
||||||
|
[Permissions.USE_PRIVATE_THREADS]: "Create Private Threads",
|
||||||
|
[Permissions.USE_PUBLIC_THREADS]: "Create Public Threads",
|
||||||
|
[1 << 39]: "Use Activities",
|
||||||
|
[1 << 40]: "Time out members",
|
||||||
|
[1 << 41]: "View Server Subscription Insights",
|
||||||
|
[1 << 42]: "Use Soundboard",
|
||||||
|
[1 << 43]: "Create Expressions",
|
||||||
|
[1 << 44]: "Create Events",
|
||||||
|
[1 << 45]: "Use External Sounds",
|
||||||
|
[1 << 46]: "Send Voice Messages",
|
||||||
|
[1 << 47]: "Use Clyde AI",
|
||||||
|
[1 << 48]: "Set Voice Channel Status",
|
||||||
|
[1 << 49]: "Create Polls",
|
||||||
|
[1 << 50]: "Use External Apps"
|
||||||
|
});
|
||||||
|
|
||||||
|
module.exports.PERMISSION_CATEGORIES = Object.freeze({
|
||||||
|
GENERAL_SERVER: [
|
||||||
|
Permissions.VIEW_CHANNEL,
|
||||||
|
Permissions.MANAGE_CHANNELS,
|
||||||
|
Permissions.MANAGE_ROLES,
|
||||||
|
Permissions.MANAGE_EMOJIS,
|
||||||
|
1 << 43, // Create expressions
|
||||||
|
Permissions.VIEW_AUDIT_LOG,
|
||||||
|
Permissions.VIEW_GUILD_ANALYTICS,
|
||||||
|
1 << 41, // View subscription analytics
|
||||||
|
Permissions.MANAGE_WEBHOOKS,
|
||||||
|
Permissions.MANAGE_GUILD
|
||||||
|
],
|
||||||
|
MEMBERSHIP_PERMISSIONS: [
|
||||||
|
Permissions.CREATE_INSTANT_INVITE,
|
||||||
|
Permissions.CHANGE_NICKNAME,
|
||||||
|
Permissions.CHANGE_NICKNAMES,
|
||||||
|
Permissions.KICK_MEMBERS,
|
||||||
|
Permissions.BAN_MEMBERS,
|
||||||
|
1 << 40 // Time out members
|
||||||
|
],
|
||||||
|
TEXT_CHANNEL_PERMISSIONS: [
|
||||||
|
Permissions.SEND_MESSAGES,
|
||||||
|
Permissions.SEND_MESSAGES_IN_THREADS,
|
||||||
|
Permissions.USE_PUBLIC_THREADS,
|
||||||
|
Permissions.USE_PRIVATE_THREADS,
|
||||||
|
Permissions.EMBED_LINKS,
|
||||||
|
Permissions.ATTACH_FILES,
|
||||||
|
Permissions.ADD_REACTIONS,
|
||||||
|
Permissions.USE_EXTERNAL_EMOJIS,
|
||||||
|
Permissions.USE_EXTERNAL_STICKERS,
|
||||||
|
Permissions.MENTION_EVERYONE,
|
||||||
|
Permissions.MANAGE_MESSAGES,
|
||||||
|
Permissions.MANAGE_THREADS,
|
||||||
|
Permissions.READ_MESSAGE_HISTORY,
|
||||||
|
Permissions.SEND_TTS_MESSAGES,
|
||||||
|
1 << 46, // Send Voice Messages
|
||||||
|
1 << 49 // Create Polls
|
||||||
|
],
|
||||||
|
VOICE_CHANNEL_PERMISSIONS: [
|
||||||
|
Permissions.CONNECT,
|
||||||
|
Permissions.SPEAK,
|
||||||
|
Permissions.STREAM,
|
||||||
|
1 << 42, // Use soundboard
|
||||||
|
1 << 45, // Use external sounds
|
||||||
|
Permissions.USE_VAD,
|
||||||
|
Permissions.PRIORITY_SPEAKER,
|
||||||
|
Permissions.MUTE_MEMBERS,
|
||||||
|
Permissions.DEAFEN_MEMBERS,
|
||||||
|
Permissions.MOVE_MEMBERS,
|
||||||
|
1 << 48 // Set voice channel status
|
||||||
|
],
|
||||||
|
APPS_PERMISSIONS: [
|
||||||
|
Permissions.USE_APPLICATION_COMMANDS,
|
||||||
|
1 << 39, // Use Activities
|
||||||
|
1 << 50 // Use External Apps
|
||||||
|
],
|
||||||
|
STAGE_CHANNEL_PERMISSIONS: [
|
||||||
|
Permissions.REQUEST_TO_SPEAK
|
||||||
|
],
|
||||||
|
EVENTS_PERMISSIONS: [
|
||||||
|
1 << 44, // Create Events
|
||||||
|
Permissions.MANAGE_EVENTS
|
||||||
|
],
|
||||||
|
ADVANCED_PERMISSIONS: [
|
||||||
|
Permissions.ADMINISTRATOR
|
||||||
|
]
|
||||||
|
})
|
|
@ -23,6 +23,7 @@
|
||||||
"#constants": "./labscore/constants.js",
|
"#constants": "./labscore/constants.js",
|
||||||
"#logging": "./labscore/logging.js",
|
"#logging": "./labscore/logging.js",
|
||||||
"#obelisk": "./labscore/api/obelisk/index.js",
|
"#obelisk": "./labscore/api/obelisk/index.js",
|
||||||
|
"#permissions": "./labscore/permissions.js",
|
||||||
"#utils/*": "./labscore/utils/*.js"
|
"#utils/*": "./labscore/utils/*.js"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue