MCPcopy Index your code
hub / github.com/codebymitch/TitanBot / kickUser

Method kickUser

src/services/moderationService.js:210–266  ·  view source on GitHub ↗
({
    guild,
    member,
    moderator,
    reason = 'No reason provided'
  })

Source from the content-addressed store, hash-verified

208 }
209
210 static async kickUser({
211 guild,
212 member,
213 moderator,
214 reason = 'No reason provided'
215 }) {
216 try {
217 if (!guild || !member || !moderator) {
218 throw new TitanBotError(
219 'Missing required parameters',
220 ErrorTypes.VALIDATION,
221 'Guild, member, and moderator are required'
222 );
223 }
224
225 this.assertModerationHierarchy(moderator, member, 'kick');
226
227 if (!member.kickable) {
228 const targetLabel = getTargetLabel(member);
229 throw new TitanBotError(
230 'Cannot kick member',
231 ErrorTypes.PERMISSION,
232 `I cannot kick **${targetLabel}**. They may have **Administrator** permission or a managed/integration role. ` +
233 'Ensure my bot role is above theirs in **Server Settings → Roles** and that they do not have Admin.'
234 );
235 }
236
237 await member.kick(reason);
238
239 const caseId = await logModerationAction({
240 client: guild.client,
241 guild,
242 event: {
243 action: 'Member Kicked',
244 target: `${member.user.tag} (${member.id})`,
245 executor: `${moderator.user.tag} (${moderator.id})`,
246 reason,
247 metadata: {
248 userId: member.id,
249 moderatorId: moderator.id
250 }
251 }
252 });
253
254 logger.info(`User kicked: ${member.user.tag} by ${moderator.user.tag} in ${guild.name}`);
255
256 return {
257 success: true,
258 caseId,
259 user: member.user.tag,
260 reason
261 };
262 } catch (error) {
263 logger.error('Error kicking user:', error);
264 throw error;
265 }
266 }
267

Callers 1

executeFunction · 0.80

Calls 3

logModerationActionFunction · 0.90
getTargetLabelFunction · 0.85

Tested by

no test coverage detected