APRK01 commited on
Commit
94e16ac
·
1 Parent(s): 806c2d7

feat: add Server Manager, Moderator roles, owner-chat, lock resources

Browse files
Files changed (2) hide show
  1. src/commands/createChannels.js +10 -3
  2. src/config.js +49 -16
src/commands/createChannels.js CHANGED
@@ -145,14 +145,21 @@ function buildChannelOverwrites(catDef, chDef, roleMap) {
145
  }
146
  } else if (chDef.readOnly) {
147
  // Only Staff and Owner can send in read-only channels
148
- if (['@@ Staff', '@@ Owner', '@@ Co-Owner'].includes(roleName)) {
149
  if (perms.send === true) allow.push(PermissionFlagsBits.SendMessages);
150
  } else {
151
  deny.push(PermissionFlagsBits.SendMessages);
152
  }
153
  } else if (chDef.staffOnly) {
154
  // Only Staff and Owner can see/send
155
- if (['@@ Staff', '@@ Owner', '@@ Co-Owner'].includes(roleName)) {
 
 
 
 
 
 
 
156
  allow.push(PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages);
157
  } else {
158
  deny.push(PermissionFlagsBits.ViewChannel);
@@ -173,7 +180,7 @@ function buildChannelOverwrites(catDef, chDef, roleMap) {
173
  }
174
 
175
  // noEmbeds: block attachments, embeds, and external emojis (text-only channel)
176
- if (chDef.noEmbeds && !['@@ Staff', '@@ Owner', '@@ Co-Owner'].includes(roleName)) {
177
  deny.push(PermissionFlagsBits.AttachFiles);
178
  deny.push(PermissionFlagsBits.EmbedLinks);
179
  deny.push(PermissionFlagsBits.UseExternalEmojis);
 
145
  }
146
  } else if (chDef.readOnly) {
147
  // Only Staff and Owner can send in read-only channels
148
+ if (['@@ Staff', '@@ Server Manager', '@@ Owner', '@@ Co-Owner'].includes(roleName)) {
149
  if (perms.send === true) allow.push(PermissionFlagsBits.SendMessages);
150
  } else {
151
  deny.push(PermissionFlagsBits.SendMessages);
152
  }
153
  } else if (chDef.staffOnly) {
154
  // Only Staff and Owner can see/send
155
+ if (['@@ Staff', '@@ Server Manager', '@@ Owner', '@@ Co-Owner'].includes(roleName)) {
156
+ allow.push(PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages);
157
+ } else {
158
+ deny.push(PermissionFlagsBits.ViewChannel);
159
+ }
160
+ } else if (chDef.special === 'owner-chat') {
161
+ // Only Owner, Co-Owner, and Server Manager can see/send
162
+ if (['@@ Owner', '@@ Co-Owner', '@@ Server Manager'].includes(roleName)) {
163
  allow.push(PermissionFlagsBits.ViewChannel, PermissionFlagsBits.SendMessages);
164
  } else {
165
  deny.push(PermissionFlagsBits.ViewChannel);
 
180
  }
181
 
182
  // noEmbeds: block attachments, embeds, and external emojis (text-only channel)
183
+ if (chDef.noEmbeds && !['@@ Staff', '@@ Server Manager', '@@ Owner', '@@ Co-Owner'].includes(roleName)) {
184
  deny.push(PermissionFlagsBits.AttachFiles);
185
  deny.push(PermissionFlagsBits.EmbedLinks);
186
  deny.push(PermissionFlagsBits.UseExternalEmojis);
src/config.js CHANGED
@@ -27,6 +27,26 @@ const Roles = [
27
  hoist: true,
28
  mentionable: true,
29
  },
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
30
  {
31
  name: '@@ Staff',
32
  color: '#e67e22',
@@ -45,6 +65,17 @@ const Roles = [
45
  hoist: true,
46
  mentionable: true,
47
  },
 
 
 
 
 
 
 
 
 
 
 
48
  {
49
  name: '@@ Helper',
50
  color: '#1abc9c',
@@ -83,15 +114,6 @@ const Roles = [
83
  ];
84
 
85
  // ── Channel / Category Layout ─────────────────────────────────
86
- // Permission key legend:
87
- // VIEW = ViewChannel
88
- // SEND = SendMessages
89
- // noEmbeds = deny EmbedLinks + AttachFiles (text-only channel)
90
- //
91
- // PUBLIC channels (visible to @everyone without Verified):
92
- // 📜・rules, ✅・verify, ⚠️・disclaimer
93
- // EVERYTHING else requires @@ Verified to see.
94
-
95
  const Categories = [
96
  {
97
  name: '📌・INFORMATION',
@@ -107,7 +129,9 @@ const Categories = [
107
  everyone: { view: false, send: false },
108
  '@@ Verified': { view: true, send: true },
109
  '@@ Booster': { view: true, send: true },
 
110
  '@@ Staff': { view: true, send: true },
 
111
  '@@ Owner': { view: true, send: true },
112
  }),
113
  },
@@ -122,7 +146,9 @@ const Categories = [
122
  everyone: { view: false, send: false },
123
  '@@ Verified': { view: true, send: true },
124
  '@@ Booster': { view: true, send: true },
 
125
  '@@ Staff': { view: true, send: true },
 
126
  '@@ Owner': { view: true, send: true },
127
  }),
128
  },
@@ -136,7 +162,9 @@ const Categories = [
136
  everyone: { view: false, send: false },
137
  '@@ Verified': { view: true, send: false },
138
  '@@ Booster': { view: true, send: false },
 
139
  '@@ Staff': { view: true, send: true },
 
140
  '@@ Owner': { view: true, send: true },
141
  }),
142
  },
@@ -153,23 +181,25 @@ const Categories = [
153
  '@@ Verified': { view: true, send: false },
154
  '@@ Booster': { view: true, send: false },
155
  '@@ Staff': { view: true, send: true },
 
156
  '@@ Owner': { view: true, send: true },
157
  }),
158
  },
159
  {
160
  name: '🌐・RESOURCES',
161
  channels: [
162
- { name: '🌐・resources', type: 'text' },
163
- { name: '🌐・free-assets', type: 'text' },
164
- { name: '🌐・scripts', type: 'text' },
165
- { name: '🌐・drivers', type: 'text' },
166
  { name: '🌐・community-content', type: 'text', special: 'community-content' },
167
  ],
168
  permOverrides: () => ({
169
  everyone: { view: false, send: false },
170
  '@@ Verified': { view: true, send: false },
171
  '@@ Booster': { view: true, send: false },
172
- '@@ Staff': { view: true, send: true },
 
173
  '@@ Owner': { view: true, send: true },
174
  }),
175
  },
@@ -177,19 +207,21 @@ const Categories = [
177
  name: '💜・BOOSTER ZONE',
178
  channels: [
179
  { name: '💜・booster-chat', type: 'text' },
180
- { name: '💎・booster-rewards', type: 'text' },
181
  { name: '🚀・booster-updates', type: 'text' },
182
  ],
183
  permOverrides: () => ({
184
  everyone: { view: false, send: false },
185
  '@@ Booster': { view: true, send: true },
186
- '@@ Owner': { view: true, send: true },
187
  '@@ Staff': { view: true, send: true },
 
 
188
  }),
189
  },
190
  {
191
  name: '🛡️・STAFF ONLY',
192
  channels: [
 
193
  { name: '🛡️・staff-chat', type: 'text' },
194
  { name: '📁・staff-logs', type: 'text', special: 'staff-logs' },
195
  { name: '⚙️・bot-control', type: 'text' },
@@ -197,6 +229,7 @@ const Categories = [
197
  permOverrides: () => ({
198
  everyone: { view: false, send: false },
199
  '@@ Staff': { view: true, send: true },
 
200
  '@@ Owner': { view: true, send: true },
201
  }),
202
  },
 
27
  hoist: true,
28
  mentionable: true,
29
  },
30
+ {
31
+ name: '@@ Server Manager',
32
+ color: '#e91e63',
33
+ permissions: [
34
+ PermissionFlagsBits.ManageGuild,
35
+ PermissionFlagsBits.ManageChannels,
36
+ PermissionFlagsBits.ManageRoles,
37
+ PermissionFlagsBits.KickMembers,
38
+ PermissionFlagsBits.BanMembers,
39
+ PermissionFlagsBits.ManageMessages,
40
+ PermissionFlagsBits.MuteMembers,
41
+ PermissionFlagsBits.DeafenMembers,
42
+ PermissionFlagsBits.MoveMembers,
43
+ PermissionFlagsBits.ManageNicknames,
44
+ PermissionFlagsBits.ViewChannel,
45
+ PermissionFlagsBits.SendMessages,
46
+ ],
47
+ hoist: true,
48
+ mentionable: true,
49
+ },
50
  {
51
  name: '@@ Staff',
52
  color: '#e67e22',
 
65
  hoist: true,
66
  mentionable: true,
67
  },
68
+ {
69
+ name: '@@ Moderator',
70
+ color: '#f1c40f',
71
+ permissions: [
72
+ PermissionFlagsBits.ManageMessages,
73
+ PermissionFlagsBits.ViewChannel,
74
+ PermissionFlagsBits.SendMessages,
75
+ ],
76
+ hoist: true,
77
+ mentionable: true,
78
+ },
79
  {
80
  name: '@@ Helper',
81
  color: '#1abc9c',
 
114
  ];
115
 
116
  // ── Channel / Category Layout ─────────────────────────────────
 
 
 
 
 
 
 
 
 
117
  const Categories = [
118
  {
119
  name: '📌・INFORMATION',
 
129
  everyone: { view: false, send: false },
130
  '@@ Verified': { view: true, send: true },
131
  '@@ Booster': { view: true, send: true },
132
+ '@@ Moderator': { view: true, send: true },
133
  '@@ Staff': { view: true, send: true },
134
+ '@@ Server Manager': { view: true, send: true },
135
  '@@ Owner': { view: true, send: true },
136
  }),
137
  },
 
146
  everyone: { view: false, send: false },
147
  '@@ Verified': { view: true, send: true },
148
  '@@ Booster': { view: true, send: true },
149
+ '@@ Moderator': { view: true, send: true },
150
  '@@ Staff': { view: true, send: true },
151
+ '@@ Server Manager': { view: true, send: true },
152
  '@@ Owner': { view: true, send: true },
153
  }),
154
  },
 
162
  everyone: { view: false, send: false },
163
  '@@ Verified': { view: true, send: false },
164
  '@@ Booster': { view: true, send: false },
165
+ '@@ Moderator': { view: true, send: false },
166
  '@@ Staff': { view: true, send: true },
167
+ '@@ Server Manager': { view: true, send: true },
168
  '@@ Owner': { view: true, send: true },
169
  }),
170
  },
 
181
  '@@ Verified': { view: true, send: false },
182
  '@@ Booster': { view: true, send: false },
183
  '@@ Staff': { view: true, send: true },
184
+ '@@ Server Manager': { view: true, send: true },
185
  '@@ Owner': { view: true, send: true },
186
  }),
187
  },
188
  {
189
  name: '🌐・RESOURCES',
190
  channels: [
191
+ { name: '🌐・resources', type: 'text', ownerOnly: true },
192
+ { name: '🌐・free-assets', type: 'text', ownerOnly: true },
193
+ { name: '🌐・scripts', type: 'text', ownerOnly: true },
194
+ { name: '🌐・drivers', type: 'text', ownerOnly: true },
195
  { name: '🌐・community-content', type: 'text', special: 'community-content' },
196
  ],
197
  permOverrides: () => ({
198
  everyone: { view: false, send: false },
199
  '@@ Verified': { view: true, send: false },
200
  '@@ Booster': { view: true, send: false },
201
+ '@@ Staff': { view: true, send: false },
202
+ '@@ Server Manager': { view: true, send: false },
203
  '@@ Owner': { view: true, send: true },
204
  }),
205
  },
 
207
  name: '💜・BOOSTER ZONE',
208
  channels: [
209
  { name: '💜・booster-chat', type: 'text' },
210
+ { name: '💎・booster-rewards', type: 'text', ownerOnly: true },
211
  { name: '🚀・booster-updates', type: 'text' },
212
  ],
213
  permOverrides: () => ({
214
  everyone: { view: false, send: false },
215
  '@@ Booster': { view: true, send: true },
 
216
  '@@ Staff': { view: true, send: true },
217
+ '@@ Server Manager': { view: true, send: true },
218
+ '@@ Owner': { view: true, send: true },
219
  }),
220
  },
221
  {
222
  name: '🛡️・STAFF ONLY',
223
  channels: [
224
+ { name: '👑・owner-chat', type: 'text', special: 'owner-chat' },
225
  { name: '🛡️・staff-chat', type: 'text' },
226
  { name: '📁・staff-logs', type: 'text', special: 'staff-logs' },
227
  { name: '⚙️・bot-control', type: 'text' },
 
229
  permOverrides: () => ({
230
  everyone: { view: false, send: false },
231
  '@@ Staff': { view: true, send: true },
232
+ '@@ Server Manager': { view: true, send: true },
233
  '@@ Owner': { view: true, send: true },
234
  }),
235
  },