diff --git a/databases/lang/en.json b/databases/lang/en.json
index 85998b3..7b41fa5 100644
--- a/databases/lang/en.json
+++ b/databases/lang/en.json
@@ -60,6 +60,34 @@
"sent": "suggestion sent"
}
},
+ "8ball": {
+ "name": "8ball",
+ "info": "Let the 8ball respond",
+ "params": {
+ "query": {
+ "name": "query",
+ "info": "What to ask the 8ball"
+ }
+ },
+ "inner": {
+ "0": "yes",
+ "1": "no",
+ "2": "probably",
+ "3": "maybe",
+ "4": "never",
+ "5": "likely",
+ "6": "very likely",
+ "7": "unlikely",
+ "8": "very unlikely",
+ "9": "ask later",
+ "10": "sure, why not",
+ "11": "don't, why",
+ "12": "good",
+ "13": "bad",
+ "14": "**NO**",
+ "15": "**YES**"
+ }
+ },
"coin": {
"name": "coin",
"info": "Flip a coin",
@@ -69,6 +97,20 @@
"tail": "Tail"
}
},
+ "dice": {
+ "name": "dice",
+ "info": "Throw a dice",
+ "params": {
+ "sides": {
+ "name": "sides",
+ "info": "How many sides should the dice have"
+ }
+ },
+ "inner": {
+ "rolled1": "Rolled a dice :game_die: with",
+ "rolled2": "sides, got"
+ }
+ },
"eat": {
"name": "eat",
"info": "Try to eat fsh",
@@ -84,6 +126,19 @@
"8": "never gonna eat you"
}
},
+ "gcomplete": {
+ "name": "gcomplete",
+ "info": "Let google finish a sentence",
+ "params": {
+ "query": {
+ "name": "query",
+ "info": "Query to google"
+ }
+ },
+ "inner": {
+ "title": "Google complete"
+ }
+ },
"meme": {
"name": "meme",
"info": "Sends random fsh meme",
diff --git a/databases/lang/es_es.json b/databases/lang/es_es.json
index 70f3b06..8b6cb5b 100644
--- a/databases/lang/es_es.json
+++ b/databases/lang/es_es.json
@@ -60,6 +60,34 @@
"sent": "sugeriencia enviada"
}
},
+ "8ball": {
+ "name": "bola8",
+ "info": "Deja la bola 8 responder",
+ "params": {
+ "query": {
+ "name": "pregunta",
+ "info": "Que preguntar a la bola 8"
+ }
+ },
+ "inner": {
+ "0": "sí",
+ "1": "no",
+ "2": "posiblemente",
+ "3": "tal vez",
+ "4": "nunca",
+ "5": "probablemente",
+ "6": "muy probable",
+ "7": "poco probable",
+ "8": "muy poco probable",
+ "9": "pregunta mas tarde",
+ "10": "seguro, porque no",
+ "11": "no, porque",
+ "12": "bien",
+ "13": "mal",
+ "14": "**NO**",
+ "15": "**SÍ**"
+ }
+ },
"coin": {
"name": "moneda",
"info": "Tira una moneda",
@@ -69,6 +97,20 @@
"tail": "Cruz"
}
},
+ "dice": {
+ "name": "dado",
+ "info": "Lanzo un dado",
+ "params": {
+ "sides": {
+ "name": "lados",
+ "info": "Cuantos lados deberia tener el dado"
+ }
+ },
+ "inner": {
+ "rolled1": "Tiro un dado :game_die: con",
+ "rolled2": "lados, consiguio"
+ }
+ },
"eat": {
"name": "comer",
"info": "Intenta comer a fsh",
@@ -84,6 +126,19 @@
"8": "never gonna eat you"
}
},
+ "gcomplete": {
+ "name": "gcompleta",
+ "info": "Deja que google termine tu frase",
+ "params": {
+ "query": {
+ "name": "frase",
+ "info": "Frase para google"
+ }
+ },
+ "inner": {
+ "title": "Google completa"
+ }
+ },
"meme": {
"name": "meme",
"info": "Envia un meme aleatorio de fsh",
diff --git a/neWeb/page/hub.html b/neWeb/page/hub.html
deleted file mode 100644
index f7595b4..0000000
--- a/neWeb/page/hub.html
+++ /dev/null
@@ -1,81 +0,0 @@
-
-
-
- Hub - Fsh bot
- >
-
-
-
-
- Hub
- Hello {MEN}!
- Select what you will be doing
-
-
-
\ No newline at end of file
diff --git a/neWeb/page/hub/index.html b/neWeb/page/hub/index.html
new file mode 100644
index 0000000..60bd3d1
--- /dev/null
+++ b/neWeb/page/hub/index.html
@@ -0,0 +1,65 @@
+
+
+
+ Hub - Fsh bot
+
+
+
+
+
+ Hub
+ Select what you will be doing
+
+
+
\ No newline at end of file
diff --git a/neWeb/page/hub/music/index.html b/neWeb/page/hub/music/index.html
deleted file mode 100644
index 25467c3..0000000
--- a/neWeb/page/hub/music/index.html
+++ /dev/null
@@ -1 +0,0 @@
-music
\ No newline at end of file
diff --git a/newFsh/commands/economy/give.js b/newFsh/commands/economy/give.js
index 207fe9c..e1b1ea6 100644
--- a/newFsh/commands/economy/give.js
+++ b/newFsh/commands/economy/give.js
@@ -4,8 +4,8 @@ module.exports = {
name: ["give", "pay", "gift"],
params: ["member", true, "amount", true],
info: "Give someone fsh",
-
category: "economy",
+
async execute(message, arguments2, fsh) {
let user = String(arguments2[0]).replace(/<@/g, "").replace(/>/g, "");
if (!typeof Number(user) == "Number") {
@@ -25,11 +25,11 @@ module.exports = {
message.channel.send("amount can't be negative");
return;
}
- // Could just Math.floor()...
- // still user would be like: why didn't decimal part get sent
- // ok
- // wait am i dumb or did i not understand
- // i was saying both ways
+ // Could just Math.floor()...
+ // still user would be like: why didn't decimal part get sent
+ // ok
+ // wait am i dumb or did i not understand
+ // i was saying both ways
if (Number(arguments2[1]) != Math.floor(Number(arguments2[1]))) {
message.channel.send("amount can't have decimals");
return;
@@ -69,11 +69,10 @@ module.exports = {
})
.setThumbnail(user.displayAvatarURL({ format: "png" }))
.setColor("#888888")
- .setDescription(
- `${message.member} gave <@${user.id}> ${arguments2[1]} fsh`
- );
+ .setDescription(`${message.member} gave <@${user.id}> ${arguments2[1]} fsh`);
+
message.channel.send({
- embeds: [embed],
+ embeds: [embed]
});
- },
-};
+ }
+};
\ No newline at end of file
diff --git a/newFsh/commands/fun/8ball.js b/newFsh/commands/fun/8ball.js
index be41384..5adb7fb 100644
--- a/newFsh/commands/fun/8ball.js
+++ b/newFsh/commands/fun/8ball.js
@@ -2,14 +2,17 @@ const Discord = require("discord.js");
module.exports = {
name: "8ball",
- params: ['query', false],
- info: "Let the 8ball respond",
+ slash: true,
+ params: [{
+ name: 'query',
+ type: 'string',
+ max: 200,
+ required: false
+ }],
category: "fun",
- async execute(message, arguments2, fsh) {
- let data = await fetch('https://api.fsh.plus/8ball');
- data = await data.json();
-
- message.reply(`:8ball: ${data.response}`)
+ async execute(interaction, arguments, fsh) {
+ let inner = fsh.getInnerLocale(interaction);
+ interaction.reply(`:8ball: ${inner[Math.floor(Math.random() * 16)]}`)
}
};
\ No newline at end of file
diff --git a/newFsh/commands/fun/dice.js b/newFsh/commands/fun/dice.js
index 79926f5..c2660f7 100644
--- a/newFsh/commands/fun/dice.js
+++ b/newFsh/commands/fun/dice.js
@@ -1,18 +1,22 @@
const Discord = require("discord.js");
module.exports = {
- name: ['dice', 'die'],
- params: ['sides', false],
- info: "Throw a dice",
+ name: "dice",
+ slash: true,
+ params: [{
+ name: 'sides',
+ type: 'number',
+ min: 1,
+ max: 420000,
+ required: false
+ }],
category: "fun",
- async execute(message, arguments2, fsh) {
- let sides = 6
- if (String(Number(arguments2[0])) != "NaN") {
- sides = Math.max(Number(arguments2[0]), 1)
- }
+ async execute(interaction, arguments, fsh) {
+ let inner = fsh.getInnerLocale(interaction);
+ let sides = Number(arguments['sides']) || 6;
let rs = Math.floor(Math.random() * sides + 1);
- message.reply(`Rolled a dice :game_die: with ${sides} sides, got ${rs}`)
+ interaction.reply(`${inner.rolled1} ${sides} ${inner.rolled2} ${rs}`)
}
};
\ No newline at end of file
diff --git a/newFsh/commands/fun/gcomplete.js b/newFsh/commands/fun/gcomplete.js
index 1daadd7..59dbcc0 100644
--- a/newFsh/commands/fun/gcomplete.js
+++ b/newFsh/commands/fun/gcomplete.js
@@ -2,32 +2,34 @@ const Discord = require("discord.js");
module.exports = {
name: "gcomplete",
- params: ["query", true],
- info: "Let google finish a sentence",
+ slash: true,
+ params: [{
+ name: 'query',
+ type: 'string',
+ min: 1,
+ max: 100,
+ required: true
+ }],
category: "fun",
-
- async execute(message, arguments2, fsh) {
- if (arguments2.length < 1) {
- message.reply("Include a query");
- return;
- }
-
- let data = await fetch(`https://suggestqueries.google.com/complete/search?client=firefox&q=${arguments2.join(" ")}`);
+
+ async execute(interaction, arguments, fsh) {
+ let inner = fsh.getInnerLocale(interaction);
+ let data = await fetch(`https://suggestqueries.google.com/complete/search?client=firefox&q=${arguments['query']}`);
data = await data.json();
var embed = new Discord.EmbedBuilder()
- .setTitle(`${fsh.emojis.google} Google complete "${arguments2.join(" ")}"`)
- .setDescription(data[1].join("\n"))
+ .setTitle(`${fsh.emojis.google} ${inner.title} "${arguments['query']}"`)
+ .setDescription('1. '+data[1].join("\n2. "))
.setTimestamp()
.setFooter({ text: `V${fsh.version}` })
.setAuthor({
- name: message.author.username,
- iconURL: message.author.displayAvatarURL({ format: "png" }),
+ name: interaction.user.username,
+ iconURL: interaction.user.displayAvatarURL({ format: "png" }),
})
.setColor("#888888");
- message.channel.send({
+ interaction.reply({
embeds: [embed]
});
}
-};
+};
\ No newline at end of file
diff --git a/newFsh/commands/fun/lemon.js b/newFsh/commands/fun/lemon.js
index 8db3de3..23c555f 100644
--- a/newFsh/commands/fun/lemon.js
+++ b/newFsh/commands/fun/lemon.js
@@ -5,48 +5,24 @@ module.exports = {
params: ["user", true],
info: "Lemon a user",
category: "fun",
- async execute(message, arguments2, fsh) {
+
+ async execute(message, arguments, fsh) {
if (message.mentions.users != null && message.mentions.users.size > 0) {
- if (fsh.cooldown.has(String(String(message.author.id) + "-lemon"))) {
- if (
- Math.floor(new Date().getTime() / 1000) <
- fsh.cooldown.get(String(String(message.author.id) + "-lemon")) + 3600
- ) {
- message.channel.send({
- content: String(
- String("you will be able to lemon again ").replaceAll(
- "%r%",
- String(
- String(
- fsh.cooldown.get(
- String(String(message.author.id) + "-lemon")
- ) + 3600
- )
- )
- )
- ),
- });
+ if (fsh.cooldown.has(message.author.id + "-lemon")) {
+ if (Math.floor(new Date().getTime() / 1000) < fsh.cooldown.get(message.author.id + "-lemon") + 3600) {
+ message.channel.send(`you will be able to lemon again `);
return;
}
}
- message.mentions.members.first().send({
- content: String(
- fs
- .readFileSync("text/lemon.txt", "utf8")
- .replaceAll("{a}", String(message.author.username))
- ),
- });
- message.channel.send({
- content: String("lemon sent"),
- });
- fsh.cooldown.set(
- String(String(message.author.id) + "-lemon"),
- Math.floor(new Date().getTime() / 1000)
+ message.mentions.members.first().send(
+ fs
+ .readFileSync("text/lemon.txt", "utf8")
+ .replaceAll("{a}", message.author.username)
);
+ message.reply("lemon sent");
+ fsh.cooldown.set(message.author.id + "-lemon", Math.floor(new Date().getTime() / 1000));
} else {
- message.channel.send({
- content: String("you need to mention someone"),
- });
+ message.reply("you need to mention someone");
}
- },
-};
+ }
+};
\ No newline at end of file
diff --git a/newFsh/commands/fun/no-u.js b/newFsh/commands/fun/no-u.js
index 3b557e6..f98a4a1 100644
--- a/newFsh/commands/fun/no-u.js
+++ b/newFsh/commands/fun/no-u.js
@@ -5,16 +5,17 @@ module.exports = {
params: ['user', true],
info: "No u a user",
category: "fun",
- async execute(message, arguments2, fsh) {
- let user = String(arguments2[0]).replace(/<@/g, "").replace(/>/g, "");
- if (!typeof Number(user) == "Number") {
- message.channel.send("mention someone");
+
+ async execute(message, arguments, fsh) {
+ let user = (arguments[0]??'').replace(/<@/g, "").replace(/>/g, "");
+ if (Number.isNaN(Number(user))) {
+ message.reply("mention someone");
return;
}
message.delete()
- if (["816691475844694047","1068572316986003466","712342308565024818"].includes(user)) {
+ if (fsh.devIds.includes(user)) {
user = message.member.id
}
message.channel.send(`<@${user}> no u\n||This action was performed by a user||`)
}
-};
+};
\ No newline at end of file
diff --git a/newFsh/commands/fun/robloxu.js b/newFsh/commands/fun/robloxu.js
index 327c18b..9dfec53 100644
--- a/newFsh/commands/fun/robloxu.js
+++ b/newFsh/commands/fun/robloxu.js
@@ -36,10 +36,10 @@ module.exports = {
let users = await getof(`https://users.roblox.com/v1/users/${data.id}`);
let pfp = await getof(`https://thumbnails.roblox.com/v1/users/avatar?userIds=${data.id}&size=720x720&format=Png&isCircular=false`);
- pfp = pfp.data[0].imageUrl;
-
+ pfp = pfp.data[0].imageUrl;
+
let games = await getof(`https://games.roblox.com/v2/users/${data.id}/games?accessFilter=2&limit=10&sortOrder=Asc`);
- games = games.data
+ games = games.data;
let friends = await getof(`https://friends.roblox.com/v1/users/${data.id}/friends/count`);
friends = friends.count;
diff --git a/newFsh/commands/util/activitys.js b/newFsh/commands/util/activitys.js
index 0f6c51f..8428069 100644
--- a/newFsh/commands/util/activitys.js
+++ b/newFsh/commands/util/activitys.js
@@ -33,16 +33,17 @@ module.exports = {
params: ["userid/ping", false],
info: "Get user activities",
category: "utility",
+
async execute(message, arguments2, fsh) {
//if (!fsh.devIds.includes(message.author.id)) return;
/*
- Playing 0
- Streaming 1
- Listening 2
- Watching 3
- Custom 4
- Competing 5
- */
+ Playing 0
+ Streaming 1
+ Listening 2
+ Watching 3
+ Custom 4
+ Competing 5
+ */
let embeds = [];
@@ -153,42 +154,42 @@ module.exports = {
embeds.push(emb);
/*const exampleEmbed = new EmbedBuilder()
- .setColor(0x0099FF)
- .setTitle('Some title')
- .setURL('https://discord.js.org/')
- .setAuthor({
- name: 'Some name',
- iconURL: 'https://i.imgur.com/AfFp7pu.png',
- url: 'https://discord.js.org'
- })
- .setDescription('Some description here')
- .setThumbnail('https://i.imgur.com/AfFp7pu.png')
- .addFields({
- name: 'Regular field title',
- value: 'Some value here'
- }, {
- name: '\u200B',
- value: '\u200B'
- }, {
- name: 'Inline field title',
- value: 'Some value here',
- inline: true
- }, {
- name: 'Inline field title',
- value: 'Some value here',
- inline: true
- }, )
- .addFields({
- name: 'Inline field title',
- value: 'Some value here',
- inline: true
- })
- .setImage('https://i.imgur.com/AfFp7pu.png')
- .setTimestamp()
- .setFooter({
- text: 'Some footer text here',
- iconURL: 'https://i.imgur.com/AfFp7pu.png'
- });*/
+ .setColor(0x0099FF)
+ .setTitle('Some title')
+ .setURL('https://discord.js.org/')
+ .setAuthor({
+ name: 'Some name',
+ iconURL: 'https://i.imgur.com/AfFp7pu.png',
+ url: 'https://discord.js.org'
+ })
+ .setDescription('Some description here')
+ .setThumbnail('https://i.imgur.com/AfFp7pu.png')
+ .addFields({
+ name: 'Regular field title',
+ value: 'Some value here'
+ }, {
+ name: '\u200B',
+ value: '\u200B'
+ }, {
+ name: 'Inline field title',
+ value: 'Some value here',
+ inline: true
+ }, {
+ name: 'Inline field title',
+ value: 'Some value here',
+ inline: true
+ }, )
+ .addFields({
+ name: 'Inline field title',
+ value: 'Some value here',
+ inline: true
+ })
+ .setImage('https://i.imgur.com/AfFp7pu.png')
+ .setTimestamp()
+ .setFooter({
+ text: 'Some footer text here',
+ iconURL: 'https://i.imgur.com/AfFp7pu.png'
+ });*/
});
if (!embeds.length) {
diff --git a/newFsh/commands/util/ask.js b/newFsh/commands/util/ask.js
index 3f39898..24d1070 100644
--- a/newFsh/commands/util/ask.js
+++ b/newFsh/commands/util/ask.js
@@ -7,7 +7,7 @@ module.exports = {
category: "hidden",
async execute(message, arguments2, fsh) {
- message.channel.sendTyping()
+ message.channel.sendTyping();
/*let data = await fetch("https://reverse.mubi.tech/v1/chat/completions", {
"headers": {
"content-type": "application/json",
@@ -15,18 +15,22 @@ module.exports = {
"body": `{"model":"llama-2-7b","messages":[{"role":"user","content":"${encodeURIComponent(arguments2.join("%20"))}"}]}`,
"method": "POST"
});*/
- let data = await fetch(`https://api.fsh.plus/generate?text=user
-${encodeURIComponent(arguments2.join("%20"))}
-model`);
- if (!String(data.status).startsWith("2")) {
+ let data = await fetch(`https://api.fsh.plus/generate?text=user%0A${encodeURIComponent(arguments2.join("%20"))}%0Amodel`);
+ if ((!String(data.status).startsWith("2")) || data.err) {
message.reply("ai not available")
return;
}
data = await data.json();
- data = await fetch(`https://api.fsh.plus/generate?text=`+encodeURIComponent(data.generated_text));
+ message.channel.sendTyping();
+ let data2 = await fetch(`https://api.fsh.plus/generate?text=`+encodeURIComponent(data.generated_text));
+ if ((!String(data.status).startsWith("2")) || data.err) {
+ message.reply(`${fsh.emojis.ai} Response:
+${data.generated_text.split('model')[1]}`)
+ return;
+ }
data = await data.json();
-
+
message.reply(`${fsh.emojis.ai} Response:
-${data.generated_text.split('model')[1]}`)
+${data2.generated_text.split('model')[1]}`)
}
};
\ No newline at end of file
diff --git a/newFsh/commands/util/server.js b/newFsh/commands/util/server.js
index 734be87..3ae9bff 100644
--- a/newFsh/commands/util/server.js
+++ b/newFsh/commands/util/server.js
@@ -1,53 +1,8 @@
const Discord = require("discord.js");
+const guild_features = require("../../../text/guild_features.js");
-function feat(f) {
- let n = {
- GUILD_ONBOARDING: 'Onboarding',
- PREVIEW_ENABLED: 'Server preview',
- THREADS_ENABLED: 'Threads',
- COMMUNITY: 'Community server',
- SOUNDBOARD: 'Soundboard',
- NEWS: 'Announcement channels',
- AUTOMOD_TRIGGER_USER_PROFILE: 'User profile automod',
- GUILD_SERVER_GUIDE: 'Server guide',
- GUILD_ONBOARDING_EVER_ENABLED: 'Onboarding tried',
- NEW_THREAD_PERMISSIONS: 'Thread permisions v2',
- AUTO_MODERATION: 'Automod',
- GUILD_ONBOARDING_HAS_PROMPTS: 'Onboarding prompts',
- MEMBER_VERIFICATION_GATE_ENABLED: 'Verification gate',
- TEXT_IN_VOICE_ENABLED: 'Text in voice',
- WELCOME_SCREEN_ENABLED: 'Welcome screen',
- CHANNEL_ICON_EMOJIS_GENERATED: 'Auto channel icon',
- ANIMATED_BANNER: 'Animated banner',
- ANIMATED_ICON: 'Animated icon',
- APPLICATION_COMMAND_PERMISSIONS_V2: 'Bot command permission v2',
- BANNER: 'Banner',
- CREATOR_MONETIZABLE_PROVISIONAL: 'Server monitization',
- CREATOR_STORE_PAGE: 'Server store',
- DEVELOPER_SUPPORT_SERVER: 'Bot support server',
- DISCOVERABLE: 'Discoverable',
- FEATURABLE: 'Featurable',
- HAS_DIRECTORY_ENTRY: 'Channel directory',
- HUB: 'Student hub',
- INVITE_SPLASH: 'Invite splash',
- INVITES_DISABLED: 'Disabled invites',
- LINKED_TO_HUB: 'Student hub linked',
- MEMBER_VERIFICATION_GATE_ENABLED: 'Member verification gate',
- MONETIZATION_ENABLED: 'Monitization',
- MORE_STICKERS: 'More stickers',
- PARTNERED: 'Partnered',
- PRIVATE_THREADS: 'Private threads',
- RAID_ALERTS_DISABLED: 'Raid alerts off',
- RELAY_ENABLED: 'Relay',
- ROLE_ICONS: 'Role icons',
- ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE: 'Role subscriptions for purchased',
- ROLE_SUBSCRIPTIONS_ENABLED: 'Role subscriptions',
- TICKETED_EVENTS_ENABLED: 'Ticketed events',
- VIP_REGIONS: 'Vip regions',
- VANITY_URL: 'Vanity url',
- VERIFIED: 'Verified'
- };
- return (n[f] ? n[f] : 'U:'+f)
+function feat(feature) {
+ return (guild_features[feature] ? guild_features[feature] : `U:${feature}`)
}
module.exports = {
diff --git a/newFsh/server.js b/newFsh/server.js
index bc5bf5c..1b75996 100644
--- a/newFsh/server.js
+++ b/newFsh/server.js
@@ -1,5 +1,5 @@
/* -- New Server -- */
-const PORT = 3000;
+const PORT = 10002;
const express = require("express");
const bodyParser = require("body-parser");
@@ -9,50 +9,6 @@ const crypto = require("crypto")
const { useQueue, useTimeline } = require("discord-player");
-function listsGetRandomItem(list, remove) {
- var x = Math.floor(Math.random() * list.length);
- if (remove) {
- return list.splice(x, 1)[0];
- } else {
- return list[x];
- }
-}
-
-function listsRepeat(value, n) {
- var array = [];
- for (var i = 0; i < n; i++) {
- array[i] = value;
- }
- return array;
-}
-
-function mathRandomInt(a, b) {
- if (a > b) {
- var c = a;
- a = b;
- b = c;
- }
- return Math.floor(Math.random() * (b - a + 1) + a);
-}
-
-function listsGetSortCompare(type, direction) {
- var compareFuncs = {
- NUMERIC: function (a, b) {
- return Number(a) - Number(b);
- },
- TEXT: function (a, b) {
- return a.toString() > b.toString() ? 1 : -1;
- },
- IGNORE_CASE: function (a, b) {
- return a.toString().toLowerCase() > b.toString().toLowerCase() ? 1 : -1;
- },
- };
- var compare = compareFuncs[type];
- return function (a, b) {
- return compare(a, b) * direction;
- };
-}
-
function makeid(length) {
var result = '';
var characters = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789@#';
@@ -173,27 +129,27 @@ module.exports = {
});
/* Music */
- app.get("/music-panel", async function(req, res) {
- if (!req.query['id']) {
+ app.get("/hub/music", async function(req, res) {
+ if (!req.query['guild_id']) {
res.send('provide id');
return;
}
- let queue = useQueue(req.query['id']);
+ let queue = useQueue(req.query['guild_id']);
if (!queue) {
res.send('unmeow');
return;
}
- const { timestamp, track, volume, paused } = useTimeline(req.query['id']);
+ const { timestamp, track, volume, paused } = useTimeline(req.query['guild_id']);
let now = Date.now();
res.send(`
Music panel - Fsh bot
-
+
-
+
@@ -214,7 +170,7 @@ module.exports = {
margin: 20px auto;
padding: 15px;
border-radius: 1rem;
- background: linear-gradient(in oklch, rgba(0,0,0,0) 50%, rgba(0,0,0,0.75) 100%), url(${track.thumbnail}), var(--bg-2);
+ background: linear-gradient(in oklch, rgba(0,0,0,0) 50%, rgba(0,0,0,0.75) 100%), url(${track.thumbnail.replace('https://i.ytimg.com','/ytimg')}), var(--bg-2);
background-size: 100%;
background-repeat: no-repeat;
}
@@ -326,7 +282,6 @@ module.exports = {
["index.html", "/"],
["api.html", "/api"],
["invite.html", "/invite"],
- ["hub.html", "/hub"],
["robots.txt"]
];
@@ -367,10 +322,7 @@ module.exports = {
fsh.client.channels.cache
.get(message.channel)
.send(message.message);
- socket.emit(
- "chat",
- `Server: Sent (${message.message}) to channel (${message.channel})`
- );
+ socket.emit("chat", `Server: Sent (${message.message}) to channel (${message.channel})`);
} catch (err) {
socket.emit("chat", `Server: ERR\n\n ${err}`);
}
diff --git a/package-lock.json b/package-lock.json
index 5a97e74..655ef1f 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -15,9 +15,9 @@
"discord-gamecord": "^4.4.1",
"discord-player": "^6.7.1",
"discord-player-youtubei": "^1.3.1",
- "discord.js": "^14.15.3",
+ "discord.js": "^14.17.2",
"easy-json-database": "^1.5.0",
- "express": "^4.21.1",
+ "express": "^4.21.2",
"ffmpeg-static": "^5.2.0",
"fshdb": "^1.0.0-beta.2",
"math-expression-evaluator": "^2.0.4",
@@ -89,32 +89,26 @@
}
},
"node_modules/@discordjs/builders": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.9.0.tgz",
- "integrity": "sha512-0zx8DePNVvQibh5ly5kCEei5wtPBIUbSoE9n+91Rlladz4tgtFbJ36PZMxxZrTEOQ7AHMZ/b0crT/0fCy6FTKg==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.10.0.tgz",
+ "integrity": "sha512-ikVZsZP+3shmVJ5S1oM+7SveUCK3L9fTyfA8aJ7uD9cNQlTqF+3Irbk2Y22KXTb3C3RNUahRkSInClJMkHrINg==",
"license": "Apache-2.0",
"dependencies": {
- "@discordjs/formatters": "^0.5.0",
+ "@discordjs/formatters": "^0.6.0",
"@discordjs/util": "^1.1.1",
"@sapphire/shapeshift": "^4.0.0",
- "discord-api-types": "0.37.97",
+ "discord-api-types": "^0.37.114",
"fast-deep-equal": "^3.1.3",
"ts-mixer": "^6.0.4",
"tslib": "^2.6.3"
},
"engines": {
- "node": ">=18"
+ "node": ">=16.11.0"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
- "node_modules/@discordjs/builders/node_modules/discord-api-types": {
- "version": "0.37.97",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
- "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==",
- "license": "MIT"
- },
"node_modules/@discordjs/collection": {
"version": "1.5.3",
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz",
@@ -124,26 +118,20 @@
}
},
"node_modules/@discordjs/formatters": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.5.0.tgz",
- "integrity": "sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.6.0.tgz",
+ "integrity": "sha512-YIruKw4UILt/ivO4uISmrGq2GdMY6EkoTtD0oS0GvkJFRZbTSdPhzYiUILbJ/QslsvC9H9nTgGgnarnIl4jMfw==",
"license": "Apache-2.0",
"dependencies": {
- "discord-api-types": "0.37.97"
+ "discord-api-types": "^0.37.114"
},
"engines": {
- "node": ">=18"
+ "node": ">=16.11.0"
},
"funding": {
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
- "node_modules/@discordjs/formatters/node_modules/discord-api-types": {
- "version": "0.37.97",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
- "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==",
- "license": "MIT"
- },
"node_modules/@discordjs/node-pre-gyp": {
"version": "0.4.5",
"resolved": "https://registry.npmjs.org/@discordjs/node-pre-gyp/-/node-pre-gyp-0.4.5.tgz",
@@ -200,9 +188,9 @@
}
},
"node_modules/@discordjs/rest": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.0.tgz",
- "integrity": "sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.2.tgz",
+ "integrity": "sha512-9bOvXYLQd5IBg/kKGuEFq3cstVxAMJ6wMxO2U3wjrgO+lHv8oNCT+BBRpuzVQh7BoXKvk/gpajceGvQUiRoJ8g==",
"license": "Apache-2.0",
"dependencies": {
"@discordjs/collection": "^2.1.1",
@@ -210,7 +198,7 @@
"@sapphire/async-queue": "^1.5.3",
"@sapphire/snowflake": "^3.5.3",
"@vladfrangu/async_event_emitter": "^2.4.6",
- "discord-api-types": "0.37.97",
+ "discord-api-types": "^0.37.114",
"magic-bytes.js": "^1.10.0",
"tslib": "^2.6.3",
"undici": "6.19.8"
@@ -234,12 +222,6 @@
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
- "node_modules/@discordjs/rest/node_modules/discord-api-types": {
- "version": "0.37.97",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
- "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==",
- "license": "MIT"
- },
"node_modules/@discordjs/util": {
"version": "1.1.1",
"resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.1.tgz",
@@ -253,20 +235,20 @@
}
},
"node_modules/@discordjs/ws": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.1.1.tgz",
- "integrity": "sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.2.0.tgz",
+ "integrity": "sha512-QH5CAFe3wHDiedbO+EI3OOiyipwWd+Q6BdoFZUw/Wf2fw5Cv2fgU/9UEtJRmJa9RecI+TAhdGPadMaEIur5yJg==",
"license": "Apache-2.0",
"dependencies": {
"@discordjs/collection": "^2.1.0",
- "@discordjs/rest": "^2.3.0",
+ "@discordjs/rest": "^2.4.1",
"@discordjs/util": "^1.1.0",
"@sapphire/async-queue": "^1.5.2",
"@types/ws": "^8.5.10",
"@vladfrangu/async_event_emitter": "^2.2.4",
- "discord-api-types": "0.37.83",
+ "discord-api-types": "^0.37.114",
"tslib": "^2.6.2",
- "ws": "^8.16.0"
+ "ws": "^8.17.0"
},
"engines": {
"node": ">=16.11.0"
@@ -276,9 +258,9 @@
}
},
"node_modules/@discordjs/ws/node_modules/@discordjs/collection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz",
- "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw==",
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
+ "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==",
"license": "Apache-2.0",
"engines": {
"node": ">=18"
@@ -297,9 +279,9 @@
}
},
"node_modules/@sapphire/async-queue": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.3.tgz",
- "integrity": "sha512-x7zadcfJGxFka1Q3f8gCts1F0xMwCKbZweM85xECGI0hBTeIZJGGCrHgLggihBoprlQ/hBmDR5LKfIPqnmHM3w==",
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.5.tgz",
+ "integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==",
"license": "MIT",
"engines": {
"node": ">=v14.0.0",
@@ -909,9 +891,10 @@
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
},
"node_modules/discord-api-types": {
- "version": "0.37.83",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz",
- "integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA=="
+ "version": "0.37.115",
+ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.115.tgz",
+ "integrity": "sha512-ivPnJotSMrXW8HLjFu+0iCVs8zP6KSliMelhr7HgcB2ki1QzpORkb26m71l1pzSnnGfm7gb5n/VtRTtpw8kXFA==",
+ "license": "MIT"
},
"node_modules/discord-gamecord": {
"version": "4.4.1",
@@ -975,19 +958,19 @@
}
},
"node_modules/discord.js": {
- "version": "14.16.0",
- "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.16.0.tgz",
- "integrity": "sha512-FcJtUkdfW1GCtq+jBkB6yTS6eu3kV9W1XE+t6+OGqjAj3o6P88kZMpZgrP+yBn0KeCxA0hvU2dFzQrcA4uhRQg==",
+ "version": "14.17.2",
+ "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.17.2.tgz",
+ "integrity": "sha512-mrH6ziLVtNtId4bV4bsaUt5jE6NUaiHMPqO5VsSw1VVhFnjFi9duD8ctlo90/6cUH+8uyKBkoq9mSJ35SuuZ7Q==",
"license": "Apache-2.0",
"dependencies": {
- "@discordjs/builders": "^1.9.0",
+ "@discordjs/builders": "^1.10.0",
"@discordjs/collection": "1.5.3",
- "@discordjs/formatters": "^0.5.0",
- "@discordjs/rest": "^2.4.0",
+ "@discordjs/formatters": "^0.6.0",
+ "@discordjs/rest": "^2.4.2",
"@discordjs/util": "^1.1.1",
- "@discordjs/ws": "1.1.1",
+ "@discordjs/ws": "^1.2.0",
"@sapphire/snowflake": "3.5.3",
- "discord-api-types": "0.37.97",
+ "discord-api-types": "^0.37.114",
"fast-deep-equal": "3.1.3",
"lodash.snakecase": "4.1.1",
"tslib": "^2.6.3",
@@ -1000,12 +983,6 @@
"url": "https://github.com/discordjs/discord.js?sponsor"
}
},
- "node_modules/discord.js/node_modules/discord-api-types": {
- "version": "0.37.97",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
- "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==",
- "license": "MIT"
- },
"node_modules/dom-serializer": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz",
@@ -1224,9 +1201,9 @@
}
},
"node_modules/express": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
- "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
"license": "MIT",
"dependencies": {
"accepts": "~1.3.8",
@@ -1248,7 +1225,7 @@
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.10",
+ "path-to-regexp": "0.1.12",
"proxy-addr": "~2.0.7",
"qs": "6.13.0",
"range-parser": "~1.2.1",
@@ -1263,6 +1240,10 @@
},
"engines": {
"node": ">= 0.10.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/express"
}
},
"node_modules/express/node_modules/debug": {
@@ -2576,9 +2557,9 @@
}
},
"node_modules/path-to-regexp": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
- "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w==",
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==",
"license": "MIT"
},
"node_modules/peek-readable": {
@@ -3565,24 +3546,17 @@
}
},
"@discordjs/builders": {
- "version": "1.9.0",
- "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.9.0.tgz",
- "integrity": "sha512-0zx8DePNVvQibh5ly5kCEei5wtPBIUbSoE9n+91Rlladz4tgtFbJ36PZMxxZrTEOQ7AHMZ/b0crT/0fCy6FTKg==",
+ "version": "1.10.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.10.0.tgz",
+ "integrity": "sha512-ikVZsZP+3shmVJ5S1oM+7SveUCK3L9fTyfA8aJ7uD9cNQlTqF+3Irbk2Y22KXTb3C3RNUahRkSInClJMkHrINg==",
"requires": {
- "@discordjs/formatters": "^0.5.0",
+ "@discordjs/formatters": "^0.6.0",
"@discordjs/util": "^1.1.1",
"@sapphire/shapeshift": "^4.0.0",
- "discord-api-types": "0.37.97",
+ "discord-api-types": "^0.37.114",
"fast-deep-equal": "^3.1.3",
"ts-mixer": "^6.0.4",
"tslib": "^2.6.3"
- },
- "dependencies": {
- "discord-api-types": {
- "version": "0.37.97",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
- "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA=="
- }
}
},
"@discordjs/collection": {
@@ -3591,18 +3565,11 @@
"integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ=="
},
"@discordjs/formatters": {
- "version": "0.5.0",
- "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.5.0.tgz",
- "integrity": "sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g==",
+ "version": "0.6.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.6.0.tgz",
+ "integrity": "sha512-YIruKw4UILt/ivO4uISmrGq2GdMY6EkoTtD0oS0GvkJFRZbTSdPhzYiUILbJ/QslsvC9H9nTgGgnarnIl4jMfw==",
"requires": {
- "discord-api-types": "0.37.97"
- },
- "dependencies": {
- "discord-api-types": {
- "version": "0.37.97",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
- "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA=="
- }
+ "discord-api-types": "^0.37.114"
}
},
"@discordjs/node-pre-gyp": {
@@ -3647,16 +3614,16 @@
}
},
"@discordjs/rest": {
- "version": "2.4.0",
- "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.0.tgz",
- "integrity": "sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw==",
+ "version": "2.4.2",
+ "resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.2.tgz",
+ "integrity": "sha512-9bOvXYLQd5IBg/kKGuEFq3cstVxAMJ6wMxO2U3wjrgO+lHv8oNCT+BBRpuzVQh7BoXKvk/gpajceGvQUiRoJ8g==",
"requires": {
"@discordjs/collection": "^2.1.1",
"@discordjs/util": "^1.1.1",
"@sapphire/async-queue": "^1.5.3",
"@sapphire/snowflake": "^3.5.3",
"@vladfrangu/async_event_emitter": "^2.4.6",
- "discord-api-types": "0.37.97",
+ "discord-api-types": "^0.37.114",
"magic-bytes.js": "^1.10.0",
"tslib": "^2.6.3",
"undici": "6.19.8"
@@ -3666,11 +3633,6 @@
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
"integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg=="
- },
- "discord-api-types": {
- "version": "0.37.97",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
- "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA=="
}
}
},
@@ -3680,25 +3642,25 @@
"integrity": "sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g=="
},
"@discordjs/ws": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.1.1.tgz",
- "integrity": "sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==",
+ "version": "1.2.0",
+ "resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.2.0.tgz",
+ "integrity": "sha512-QH5CAFe3wHDiedbO+EI3OOiyipwWd+Q6BdoFZUw/Wf2fw5Cv2fgU/9UEtJRmJa9RecI+TAhdGPadMaEIur5yJg==",
"requires": {
"@discordjs/collection": "^2.1.0",
- "@discordjs/rest": "^2.3.0",
+ "@discordjs/rest": "^2.4.1",
"@discordjs/util": "^1.1.0",
"@sapphire/async-queue": "^1.5.2",
"@types/ws": "^8.5.10",
"@vladfrangu/async_event_emitter": "^2.2.4",
- "discord-api-types": "0.37.83",
+ "discord-api-types": "^0.37.114",
"tslib": "^2.6.2",
- "ws": "^8.16.0"
+ "ws": "^8.17.0"
},
"dependencies": {
"@discordjs/collection": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.0.tgz",
- "integrity": "sha512-mLcTACtXUuVgutoznkh6hS3UFqYirDYAg5Dc1m8xn6OvPjetnUlf/xjtqnnc47OwWdaoCQnHmHh9KofhD6uRqw=="
+ "version": "2.1.1",
+ "resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
+ "integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg=="
}
}
},
@@ -3708,9 +3670,9 @@
"integrity": "sha512-vBZP4NlzfOlerQTnba4aqZoMhE/a9HY7HRqoOPaETQcSQuWEIyZMHGfVu6w9wGtGK5fED5qRs2DteVCjOH60sA=="
},
"@sapphire/async-queue": {
- "version": "1.5.3",
- "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.3.tgz",
- "integrity": "sha512-x7zadcfJGxFka1Q3f8gCts1F0xMwCKbZweM85xECGI0hBTeIZJGGCrHgLggihBoprlQ/hBmDR5LKfIPqnmHM3w=="
+ "version": "1.5.5",
+ "resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.5.tgz",
+ "integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg=="
},
"@sapphire/shapeshift": {
"version": "4.0.0",
@@ -4153,9 +4115,9 @@
"integrity": "sha512-qiSlmBq9+BCdCA/L46dw8Uy93mloxsPSbwnm5yrKn2vMPiy8KyAskTF6zuV/j5BMsmOGZDPs7KjU+mjb670kfA=="
},
"discord-api-types": {
- "version": "0.37.83",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz",
- "integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA=="
+ "version": "0.37.115",
+ "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.115.tgz",
+ "integrity": "sha512-ivPnJotSMrXW8HLjFu+0iCVs8zP6KSliMelhr7HgcB2ki1QzpORkb26m71l1pzSnnGfm7gb5n/VtRTtpw8kXFA=="
},
"discord-gamecord": {
"version": "4.4.1",
@@ -4204,29 +4166,22 @@
}
},
"discord.js": {
- "version": "14.16.0",
- "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.16.0.tgz",
- "integrity": "sha512-FcJtUkdfW1GCtq+jBkB6yTS6eu3kV9W1XE+t6+OGqjAj3o6P88kZMpZgrP+yBn0KeCxA0hvU2dFzQrcA4uhRQg==",
+ "version": "14.17.2",
+ "resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.17.2.tgz",
+ "integrity": "sha512-mrH6ziLVtNtId4bV4bsaUt5jE6NUaiHMPqO5VsSw1VVhFnjFi9duD8ctlo90/6cUH+8uyKBkoq9mSJ35SuuZ7Q==",
"requires": {
- "@discordjs/builders": "^1.9.0",
+ "@discordjs/builders": "^1.10.0",
"@discordjs/collection": "1.5.3",
- "@discordjs/formatters": "^0.5.0",
- "@discordjs/rest": "^2.4.0",
+ "@discordjs/formatters": "^0.6.0",
+ "@discordjs/rest": "^2.4.2",
"@discordjs/util": "^1.1.1",
- "@discordjs/ws": "1.1.1",
+ "@discordjs/ws": "^1.2.0",
"@sapphire/snowflake": "3.5.3",
- "discord-api-types": "0.37.97",
+ "discord-api-types": "^0.37.114",
"fast-deep-equal": "3.1.3",
"lodash.snakecase": "4.1.1",
"tslib": "^2.6.3",
"undici": "6.19.8"
- },
- "dependencies": {
- "discord-api-types": {
- "version": "0.37.97",
- "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
- "integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA=="
- }
}
},
"dom-serializer": {
@@ -4364,9 +4319,9 @@
"integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg=="
},
"express": {
- "version": "4.21.1",
- "resolved": "https://registry.npmjs.org/express/-/express-4.21.1.tgz",
- "integrity": "sha512-YSFlK1Ee0/GC8QaO91tHcDxJiE/X4FbpAyQWkxAvG6AXCuR65YzK8ua6D9hvi/TzUfZMpc+BwuM1IPw8fmQBiQ==",
+ "version": "4.21.2",
+ "resolved": "https://registry.npmjs.org/express/-/express-4.21.2.tgz",
+ "integrity": "sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==",
"requires": {
"accepts": "~1.3.8",
"array-flatten": "1.1.1",
@@ -4387,7 +4342,7 @@
"methods": "~1.1.2",
"on-finished": "2.4.1",
"parseurl": "~1.3.3",
- "path-to-regexp": "0.1.10",
+ "path-to-regexp": "0.1.12",
"proxy-addr": "~2.0.7",
"qs": "6.13.0",
"range-parser": "~1.2.1",
@@ -5250,9 +5205,9 @@
"peer": true
},
"path-to-regexp": {
- "version": "0.1.10",
- "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.10.tgz",
- "integrity": "sha512-7lf7qcQidTku0Gu3YDPc8DJ1q7OOucfa/BSsIwjuh56VU7katFvuM8hULfkwB3Fns/rsVF7PwPKVw1sl5KQS9w=="
+ "version": "0.1.12",
+ "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.12.tgz",
+ "integrity": "sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ=="
},
"peek-readable": {
"version": "4.1.0",
@@ -5900,4 +5855,4 @@
}
}
}
-}
\ No newline at end of file
+}
diff --git a/package.json b/package.json
index cf61858..7450d19 100644
--- a/package.json
+++ b/package.json
@@ -30,9 +30,9 @@
"discord-gamecord": "^4.4.1",
"discord-player": "^6.7.1",
"discord-player-youtubei": "^1.3.1",
- "discord.js": "^14.15.3",
+ "discord.js": "^14.17.2",
"easy-json-database": "^1.5.0",
- "express": "^4.21.1",
+ "express": "^4.21.2",
"ffmpeg-static": "^5.2.0",
"fshdb": "^1.0.0-beta.2",
"math-expression-evaluator": "^2.0.4",
diff --git a/text/bad.txt b/text/bad.txt
index 4389019..1af5919 100644
--- a/text/bad.txt
+++ b/text/bad.txt
@@ -1 +1 @@
-938831934962946170,945843153141911583,1042492981829173299,703405189872353401,1060305202948874403,980363502709530654,1110438615630217257,1108699529395568650,1108473547791290428,265941606035619841,396828331192090625,784977471162155029,1080404723133325392,990494289027018753,989179816873955378,846543119914893394,546917869141884938,989535117150158888,425708102520668173,784849546357768233,973829920025346088,436965815036674079,527604348037890048,615837732190552084,1114811223352016897,945816874938155029,1114247574115864656,961162577302388751,906907112704204820,893967180448821259,1092622262114467941,912881117277876297,1128423275391889490,880283255625113641,738113139295387761,1122818033669394504,1127927100947570708,599945975259201587,1141481803576770630,1137123219661410344,1145111635397193758,1118954109354123306,1118967325765410938,1154067086155468800,601480674670805024,1118969169547894804,972923595506475049,1118930270339473461,1075755980660416612,1165552145559457802,974608074771931166,976700749385990144,988428267562360913,1164461825614692372,159985870458322944,974601085341802508,1007288024658350111,1084182519454388306,376364221128245279,1031230682246160454,973686782837293067,964006257268752454,731772226608824371,498010961102503947,976960121764712478,1195430076595056701,984655808606380082,762076450047131648,1223168494426918914,429628691023134722,1236525969582587938,551360729425641473,558996514119221249,631754347591499786,654794063307866172,657093741823131650,705030473692348426,726171028354498560,726698838881992704,779242486186246155,842024725776695336,853307742651154432,878506828676345896,889243118157848599,889243962441859144,889244104200974386,889245165586358355,889245533288402977,889253631667343431,889255332155650079,889256000211791903,889259838478090272,889262616147554344,889282279304724533,891451407658528839,891451709711351808,891491235058057246,908999657450004480,919203544173785088,919577542829150298,919916564034228256,923436995236233238,925895536425459732,928533002441596968,932083147808596018,955717644969988116,957901669365055518,958095458482397314,963380769391259708,965472860569239622,965820979039318098,967335891410489355,967772286402854932,967784659540922409,967785909045059615,925899287676727348,967787195735875615,973048816951492678,973593889787240479,974638911374647318,975158085649838110,980043139802869810,979284706631761920,981819426263420958,981821046225240075,995744187590922341,1001418778590072933,1019723088675471461,1024235828077133834,1024377776217800876,1024969444511989780,1027158402767540235,1029857317870641252,1029872234782802070,1030046147072507967,1030989378291515524,1032198369222852688,1032521822983430154,1055212720804352100,1063032636500627476,1068710194122608640,1068782292438368266,1089174715156926556,1099130512922116188,1100173698683646042,1110723354232619018,1110855772994285588,1112167835259641917,1127329372911718431,1153763266900803704,1203168493563019337,1217899783969046679,1241345157085921291,771644607070732291,1142500629407875092,845681489958010960,866731936751550535,1253228308817248260,889090864029257790,1236460122088276070,1241768160504451083,868121476027531294,1297965381880778811,1301192498244358215,352210552484790276,897912041636003951,937656270373150800,1248732426558242920,924402811939192853,1287059628424826880,784061288040759367,1302847234311979079,1281361866643472569,1011721560207401041,739457218231009280,1283955193758875721
\ No newline at end of file
+938831934962946170,945843153141911583,1042492981829173299,703405189872353401,1060305202948874403,980363502709530654,1110438615630217257,1108699529395568650,1108473547791290428,265941606035619841,396828331192090625,784977471162155029,1080404723133325392,990494289027018753,989179816873955378,846543119914893394,546917869141884938,989535117150158888,425708102520668173,784849546357768233,973829920025346088,436965815036674079,527604348037890048,615837732190552084,1114811223352016897,945816874938155029,1114247574115864656,961162577302388751,906907112704204820,893967180448821259,1092622262114467941,912881117277876297,1128423275391889490,880283255625113641,738113139295387761,1122818033669394504,1127927100947570708,599945975259201587,1141481803576770630,1137123219661410344,1145111635397193758,1118954109354123306,1118967325765410938,1154067086155468800,601480674670805024,1118969169547894804,972923595506475049,1118930270339473461,1075755980660416612,1165552145559457802,974608074771931166,976700749385990144,988428267562360913,1164461825614692372,159985870458322944,974601085341802508,1007288024658350111,1084182519454388306,376364221128245279,1031230682246160454,973686782837293067,964006257268752454,731772226608824371,498010961102503947,976960121764712478,1195430076595056701,984655808606380082,762076450047131648,1223168494426918914,429628691023134722,1236525969582587938,551360729425641473,558996514119221249,631754347591499786,654794063307866172,657093741823131650,705030473692348426,726171028354498560,726698838881992704,779242486186246155,842024725776695336,853307742651154432,878506828676345896,889243118157848599,889243962441859144,889244104200974386,889245165586358355,889245533288402977,889253631667343431,889255332155650079,889256000211791903,889259838478090272,889262616147554344,889282279304724533,891451407658528839,891451709711351808,891491235058057246,908999657450004480,919203544173785088,919577542829150298,919916564034228256,923436995236233238,925895536425459732,928533002441596968,932083147808596018,955717644969988116,957901669365055518,958095458482397314,963380769391259708,965472860569239622,965820979039318098,967335891410489355,967772286402854932,967784659540922409,967785909045059615,925899287676727348,967787195735875615,973048816951492678,973593889787240479,974638911374647318,975158085649838110,980043139802869810,979284706631761920,981819426263420958,981821046225240075,995744187590922341,1001418778590072933,1019723088675471461,1024235828077133834,1024377776217800876,1024969444511989780,1027158402767540235,1029857317870641252,1029872234782802070,1030046147072507967,1030989378291515524,1032198369222852688,1032521822983430154,1055212720804352100,1063032636500627476,1068710194122608640,1068782292438368266,1089174715156926556,1099130512922116188,1100173698683646042,1110723354232619018,1110855772994285588,1112167835259641917,1127329372911718431,1153763266900803704,1203168493563019337,1217899783969046679,1241345157085921291,771644607070732291,1142500629407875092,845681489958010960,866731936751550535,1253228308817248260,889090864029257790,1236460122088276070,1241768160504451083,868121476027531294,1297965381880778811,1301192498244358215,352210552484790276,897912041636003951,937656270373150800,1248732426558242920,924402811939192853,1287059628424826880,784061288040759367,1302847234311979079,1281361866643472569,1011721560207401041,739457218231009280,1283955193758875721,1315765026065354874,384495499908087809,1305306255589507163,989858264588124180,737578836505526303,1309984614085034095
\ No newline at end of file
diff --git a/text/guild_features.js b/text/guild_features.js
new file mode 100644
index 0000000..7848619
--- /dev/null
+++ b/text/guild_features.js
@@ -0,0 +1,142 @@
+module.exports = {
+ ACTIVITIES_ALPHA: 'Alpha activities',
+ ACTIVITIES_EMPLOYEE: 'Employee activities',
+ ACTIVITIES_INTERNAL_DEV: 'Dev activities',
+ ACTIVITY_FEED_DISABLED_BY_USER: 'Activity feed disabled',
+ ACTIVITY_FEED_ENABLED_BY_USER: 'Activity feed',
+ ANIMATED_BANNER: 'Animated banner',
+ ANIMATED_ICON: 'Animated icon',
+ APPLICATION_COMMAND_PERMISSIONS_V2: 'Old app permissions',
+ AUTO_MODERATION: 'AutoMod',
+ AUTOMOD_TRIGGER_KEYWORD_FILTER: 'Keyword AutoMod',
+ AUTOMOD_TRIGGER_ML_SPAM_FILTER: 'Spam (AI) AutoMod',
+ AUTOMOD_TRIGGER_SPAM_LINK_FILTER: 'Spam link AutoMod',
+ AUTOMOD_TRIGGER_USER_PROFILE: 'Profile AutoMod',
+ BANNER: 'Banner',
+ BOOSTING_TIERS_EXPERIMENT_MEDIUM_GUILD: 'Medium boost requirement',
+ BOOSTING_TIERS_EXPERIMENT_SMALL_GUILD: 'Small boost requirement',
+ BOT_DEVELOPER_EARLY_ACCESS: 'Early access bot',
+ BURST_REACTIONS: 'Burst reactions',
+ CHANNEL_BANNER: 'Channel banner',
+ CHANNEL_ICON_EMOJIS_GENERATED: 'Channel icon emojis',
+ CHANNEL_HIGHLIGHTS: 'Channel highlights',
+ CHANNEL_HIGHLIGHTS_DISABLED: 'Channel highlights disabled',
+ CLAN: 'Clan',
+ CLAN_DISCOVERY_DISABLED: 'Clan discovery disabled',
+ CLAN_PILOT_GENSHIN: 'Clan Genshin Impact',
+ CLAN_PILOT_VALORANT: 'Clan Valorant',
+ CLAN_PREPILOT_GENSHIN: 'Clan prepilot Genshin Impact',
+ CLAN_PREPILOT_VALORANT: 'Clan prepilot Valorant',
+ CLAN_SAFETY_REVIEW_DISABLED: 'Clan safety review disabled',
+ CLYDE_DISABLED: 'Clyde disabled',
+ CLYDE_ENABLED: 'Clyde enabled',
+ CLYDE_EXPERIMENT_ENABLED: 'Clyde experiment',
+ COMMERCE: 'Store',
+ COMMUNITY: 'Community',
+ COMMUNITY_CANARY: 'Community canary',
+ CREATOR_ACCEPTED_NEW_TERMS: 'New creator terms',
+ CREATOR_MONETIZABLE: 'Monetization',
+ CREATOR_MONETIZABLE_DISABLED: 'Monetization disabled',
+ CREATOR_MONETIZABLE_PENDING_NEW_OWNER_ONBOARDING: 'Monetization pending',
+ CREATOR_MONETIZABLE_PROVISIONAL: 'Monetization provisional',
+ CREATOR_MONETIZABLE_RESTRICTED: 'Restricted monetization',
+ CREATOR_MONETIZABLE_WHITEGLOVE: 'Monetization whiteglove',
+ CREATOR_MONETIZATION_APPLICATION_ALLOWLIST: 'Monetization app allowlist',
+ CREATOR_STORE_PAGE: 'Monetization store page',
+ DEVELOPER_SUPPORT_SERVER: 'App support server',
+ DISCOVERABLE: 'Discoverable',
+ DISCOVERABLE_DISABLED: 'Discovery disabled',
+ ENABLED_DISCOVERABLE_BEFORE: 'Previously discoverable',
+ ENABLED_MODERATION_EXPERIENCE_FOR_NON_COMMUNITY: 'Members tab without community',
+ EXPOSED_TO_BOOSTING_TIERS_EXPERIMENT: 'Reduced boosts requirement',
+ FEATURABLE: 'Featured',
+ FORCE_RELAY: 'Forced relay',
+ FORWARDING_DISABLED: 'Fowarding disabled',
+ GENSHIN_L30: 'Clan access beacause member use of Genshin Impact',
+ GUESTS_ENABLED: 'Guest invites',
+ GUILD_AUTOMOD_DEFAULT_LIST: 'Default automod lists',
+ GUILD_COMMUNICATION_DISABLED_GUILDS: 'Timeouts',
+ GUILD_HOME_DEPRECATION_OVERRIDE: 'Home tab deprecation hidden',
+ GUILD_HOME_OVERRIDE: 'Home tab without experiment',
+ GUILD_HOME_TEST: 'Home tab',
+ GUILD_ONBOARDING: 'Onboarding',
+ GUILD_ONBOARDING_ADMIN_ONLY: 'Onboarding only for admins',
+ GUILD_ONBOARDING_EVER_ENABLED: 'Previously onboarding',
+ GUILD_ONBOARDING_HAS_PROMPTS: 'Prompts configured in onboarding',
+ GUILD_PRODUCTS: 'Products',
+ GUILD_PRODUCTS_ALLOW_ARCHIVED_FILE: 'Archives as products',
+ GUILD_ROLE_SUBSCRIPTIONS: 'Role subscriptions',
+ GUILD_ROLE_SUBSCRIPTION_PURCHASE_FEEDBACK_LOOP: 'Role subscription suppress',
+ GUILD_ROLE_SUBSCRIPTION_TIER_TEMPLATE: 'Role subscriptions tier templates',
+ GUILD_ROLE_SUBSCRIPTION_TRIALS: 'Role subscriptions trials',
+ GUILD_SERVER_GUIDE: 'Server guide',
+ GUILD_WEB_PAGE_VANITY_URL: 'Vanity url by server web page',
+ HAD_EARLY_ACTIVITIES_ACCESS: 'Early activities access',
+ HAS_DIRECTORY_ENTRY: 'Listed in a directory channel',
+ HUB: 'Student hub',
+ INCREASED_THREAD_LIMIT: 'Can have over 1000 active threads',
+ INTERNAL_EMPLOYEE_ONLY: 'Discord employees only (Oh hi there)',
+ INVITE_SPLASH: 'Invite splash background',
+ LEADERBOARD_ENABLED: 'Game leaderboard',
+ INVITES_DISABLED: 'Paused invites',
+ LINKED_TO_HUB: 'Linked to a student hub',
+ LURKABLE: 'Preview guild',
+ MARKETPLACES_CONNECTION_ROLES: 'Linked roles',
+ MEDIA_CHANNEL_ALPHA: 'Media channels',
+ MEMBER_LIST_DISABLED: 'Member list disabled',
+ MEMBER_PROFILES: 'Member porfiles without Nitro',
+ MEMBER_SAFETY_PAGE_ROLLOUT: 'Member safety tab',
+ MEMBER_VERIFICATION_GATE_ENABLED: 'Member verification',
+ MEMBER_VERIFICATION_MANUAL_APPROVAL: 'Member verification v2',
+ MOBILE_WEB_ROLE_SUBSCRIPTION_PURCHASE_PAGE: 'Role subscriptions via web mobile',
+ MONETIZATION_ENABLED: 'Monetization',
+ MORE_EMOJI: 'More emoji slots',
+ MORE_SOUNDBOARD: 'More soundboard slots',
+ MORE_STICKERS: 'More sticker slots',
+ NEWS: 'News channels',
+ NEW_THREAD_PERMISSIONS: 'New thread permissions',
+ NON_COMMUNITY_RAID_ALERTS: 'Raid alerts without community',
+ PARTNERED: 'Partnered',
+ PREMIUM_TIER_3_OVERRIDE: 'Forced boost tier 3',
+ PREVIEW_ENABLED: 'Preview',
+ PRIVATE_THREADS: 'Private threads',
+ PRODUCTS_AVAILABLE_FOR_PURCHASE: 'Products for purchase',
+ PUBLIC: 'Public',
+ PUBLIC_DISABLED: 'Public disabled',
+ RAID_ALERTS_DISABLED: 'Raid alerts disabled',
+ RAID_ALERTS_ENABLED: 'Raid alerts',
+ RAPIDASH_TEST: 'Clan conversion',
+ RAPIDASH_TEST_REBIRTH: 'Clan conversion rebirth',
+ RELAY_ENABLED: 'Relay',
+ ROLE_ICONS: 'Role icons',
+ ROLE_SUBSCRIPTIONS_AVAILABLE_FOR_PURCHASE: 'Role subscriptions available for purchase',
+ ROLE_SUBSCRIPTIONS_ENABLED: 'Role subscriptions',
+ ROLE_SUBSCRIPTIONS_ENABLED_FOR_PURCHASE: 'Role subscriptions for purchase',
+ SEVEN_DAY_THREAD_ARCHIVE: '7 day thread archive',
+ SHARD: 'Shard student hub UI',
+ SHARED_CANVAS_FRIENDS_AND_FAMILY_TEST: 'Shared canvas',
+ SOUNDBOARD: 'Soundboard',
+ SUMMARIES_ENABLED: 'Summaries',
+ SUMMARIES_ENABLED_GA: 'Summaries general access',
+ SUMMARIES_DISABLED_BY_USER: 'Summaries disabled',
+ SUMMARIES_ENABLED_BY_USER: 'Summaries enabled',
+ SUMMARIES_OPT_OUT_EXPERIENCE: 'Summaries enabled by default',
+ STAFF_LEVEL_COLLABORATOR_REQUIRED: 'Collaborator or higer only (hallo)',
+ STAFF_LEVEL_RESTRICTED_COLLABORATOR_REQUIRED: 'Restricted collaborator or higher only (hewwo)',
+ TEXT_IN_STAGE_ENABLED: 'Text in stage',
+ TEXT_IN_VOICE_ENABLED: 'Text in voice',
+ THREADS_ENABLED: 'Threads',
+ THREADS_ENABLED_TESTING: 'Threads prerelease',
+ THREAD_DEFAULT_AUTO_ARCHIVE_DURATION: 'Thread default archive',
+ THREADS_ONLY_CHANNEL: 'Forum channels',
+ THREE_DAY_THREAD_ARCHIVE: '3 day thread archive',
+ TICKETED_EVENTS_ENABLED: 'Ticketed scheduled events',
+ TICKETING_ENABLED: 'Ticketing scheduled events',
+ VALORANT_L30: 'Clan access beacause member use of Valorant',
+ VANITY_URL: 'Vanity URL',
+ VERIFIED: 'Verified',
+ VIP_REGIONS: 'Better bitrate',
+ VOICE_CHANNEL_EFFECTS: 'Voice channel effects',
+ VOICE_IN_THREADS: 'Calls in threads',
+ WELCOME_SCREEN_ENABLED: 'Welcome screen'
+}
\ No newline at end of file