Skip to content
Open
Show file tree
Hide file tree
Changes from 11 commits
Commits
Show all changes
25 commits
Select commit Hold shift + click to select a range
a14bcea
update to discord.js v14
SCDerox Jan 9, 2026
bcf08e6
fixed missing strings
SCDerox Jan 9, 2026
cea21e1
fixed broken info-commands
SCDerox Jan 9, 2026
0095066
fixed duplicated entry
SCDerox Jan 9, 2026
1746bcc
Adds ping-protection module. (#168)
Kevinking500 Jan 26, 2026
de23ed2
Ping Protection V1.1 (#171)
Kevinking500 Feb 18, 2026
acf8bf7
bumped changes
SCDerox Feb 27, 2026
f0f4bc5
feat(economy): implements "Artikel bearbeiten" (#179)
jateute Mar 3, 2026
e72ed64
Added name-list-cleaner AGAIN (#183)
hfgd123 Mar 14, 2026
29addb8
Staff Management System
Mar 16, 2026
22740b7
Staff Management V1, adjusted to what Copilot requested
Mar 16, 2026
d569f1e
Fixed some changes and rewrote botReady to be better
Mar 26, 2026
55d4199
New changes from feedback.
Apr 4, 2026
bc62741
New changes from feedback, and removed many unused locales keys
Apr 5, 2026
217dc78
Some changes
Apr 8, 2026
e85a4b9
Made changes according to feedbacks, bugs and more. Also includes som…
Apr 10, 2026
971cdce
Updated according to feedbacks
Apr 11, 2026
e33fd70
Changed some lines of code according to feedback and self-testing
Apr 12, 2026
6d272e9
Some minor changes
Apr 14, 2026
9f7c41d
Some parameters fixes and adjustments
Apr 14, 2026
d88af1e
Quick config image fix
Apr 14, 2026
d14c9bc
Added deferReply for multiple functions to avoid Discord timeouts in …
Apr 14, 2026
3f0d0c5
Added deferReply to 3 more functions
Apr 14, 2026
6aa556c
Applied fixes
Apr 17, 2026
1e22522
Quick fix regarding defer reply
Apr 17, 2026
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
419 changes: 419 additions & 0 deletions locales/en.json

Large diffs are not rendered by default.

1,086 changes: 1,086 additions & 0 deletions modules/staff-management-system/commands/duty.js

Large diffs are not rendered by default.

717 changes: 717 additions & 0 deletions modules/staff-management-system/commands/staff-management.js

Large diffs are not rendered by default.

221 changes: 221 additions & 0 deletions modules/staff-management-system/commands/status.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,221 @@
const { MessageFlags } = require('discord.js');
const { handleStatusRequest, handleStatusView, handleStatusList, handleStatusManage } = require('../staff-management');
const { localize } = require('../../../src/functions/localize');

module.exports.beforeSubcommand = async function (interaction) {
if (!interaction.replied && !interaction.deferred) {
await interaction.deferReply({
flags: MessageFlags.Ephemeral
});
}
};

module.exports.subcommands = {
'loa': {
'request': async function (interaction) {
const duration = interaction.options.getString('duration');
const reason = interaction.options.getString('reason');
await handleStatusRequest(interaction.client, interaction, 'LOA', duration, reason);
},
'view': async function (interaction) {
const user = interaction.options.getUser('user') || interaction.user;
await handleStatusView(interaction.client, interaction, 'LOA', user);
},
'list': async function (interaction) {
const filter = interaction.options.getString('filter');
await handleStatusList(interaction.client, interaction, 'LOA', filter);
},
'admin': async function (interaction) {
const user = interaction.options.getMember('user');
if (!user) return interaction.editReply({
content: localize('staff-management-system', 'err-no-mem')
});
await handleStatusManage(interaction.client, interaction, user, 'LOA');
}
},
'ra': {
'request': async function (interaction) {
const duration = interaction.options.getString('duration');
const reason = interaction.options.getString('reason');
await handleStatusRequest(interaction.client, interaction, 'RA', duration, reason);
},
'view': async function (interaction) {
const user = interaction.options.getUser('user') || interaction.user;
await handleStatusView(interaction.client, interaction, 'RA', user);
},
'list': async function (interaction) {
const filter = interaction.options.getString('filter');
await handleStatusList(interaction.client, interaction, 'RA', filter);
},
'admin': async function (interaction) {
const user = interaction.options.getMember('user');
if (!user) return interaction.editReply({
content: localize('staff-management-system', 'err-no-mem')
});
await handleStatusManage(interaction.client, interaction, user, 'RA');
}
}
};

module.exports.config = {
Comment thread
Kevinking500 marked this conversation as resolved.
name: 'status',
description: localize('staff-management-system', 'cmd-desc-status'),
usage: '/status',
type: 'slash',
defaultPermission: false,
options: [
{
type: 'SUB_COMMAND_GROUP',
name: 'loa',
description: localize('staff-management-system', 'cmd-desc-loa'),
options: [
{
type: 'SUB_COMMAND',
name: 'request',
description: localize('staff-management-system', 'cmd-desc-loa-request'),
options: [
{
type: 'STRING',
name: 'duration',
description: localize('staff-management-system', 'cmd-desc-loar-duration'),
required: true
},
{
type: 'STRING',
name: 'reason',
description: localize('staff-management-system', 'cmd-desc-loar-reason'),
required: true
}
]
},
{
type: 'SUB_COMMAND',
name: 'view',
description: localize('staff-management-system', 'cmd-desc-loa-view'),
options: [
{
type: 'USER',
name: 'user',
description: localize('staff-management-system', 'cmd-desc-loav-user'),
required: false
}
]
},
{
type: 'SUB_COMMAND',
name: 'list',
description: localize('staff-management-system', 'cmd-desc-loa-list'),
options: [{
type: 'STRING',
name: 'filter',
description: localize('staff-management-system', 'cmd-desc-loal-filter'),
required: true,
choices: [
{
name: 'Active',
value: 'active'
},
{
name: 'Expired',
value: 'expired'
},
{
name: 'All',
value: 'all'
}]
}]
},
{
type: 'SUB_COMMAND',
name: 'admin',
description: localize('staff-management-system', 'cmd-desc-loa-admin'),
options: [
{
type: 'USER',
name: 'user',
description: localize('staff-management-system', 'cmd-desc-loaa-user'),
required: true
}
]
}
]
},
{
type: 'SUB_COMMAND_GROUP',
name: 'ra',
description: localize('staff-management-system', 'cmd-desc-ra'),
options: [
{
type: 'SUB_COMMAND',
name: 'request',
description: localize('staff-management-system', 'cmd-desc-ra-request'),
options: [
{
type: 'STRING',
name: 'duration',
description: localize('staff-management-system', 'cmd-desc-rar-duration'),
required: true
},
{
type: 'STRING',
name: 'reason',
description: localize('staff-management-system', 'cmd-desc-rar-reason'),
required: true
}
]
},
{
type: 'SUB_COMMAND',
name: 'view',
description: localize('staff-management-system', 'cmd-desc-ra-view'),
options: [
{
type: 'USER',
name: 'user',
description: localize('staff-management-system', 'cmd-desc-rav-user'),
required: false
}]
},
{
type: 'SUB_COMMAND',
name: 'list',
description: localize('staff-management-system', 'cmd-desc-ra-list'),
options: [
{
type: 'STRING',
name: 'filter',
description: localize('staff-management-system', 'cmd-desc-ral-filter'),
required: true,
choices: [
{
name: 'Active',
value: 'active'
},
{
name: 'Expired',
value: 'expired'
},
{
name: 'All',
value: 'all'
}
]
}]
},
{
type: 'SUB_COMMAND',
name: 'admin',
description: localize('staff-management-system', 'cmd-desc-ra-admin'),
options: [
{
type: 'USER',
name: 'user',
description: localize('staff-management-system', 'cmd-desc-raa-user'),
required: true
}
]
}
]
}
]
};
Loading