add iUseSHSF listener to manage role assignment based on user messages
All checks were successful
CI / build (push) Successful in 10s
All checks were successful
CI / build (push) Successful in 10s
This commit is contained in:
80
src/listeners/messageCreate/iUseSHSF.ts
Normal file
80
src/listeners/messageCreate/iUseSHSF.ts
Normal file
@@ -0,0 +1,80 @@
|
|||||||
|
import { Client, Events, Message } from "discord.js";
|
||||||
|
import { ROLES } from "../../config";
|
||||||
|
|
||||||
|
export default async function iUseSHSFListener(client: Client): Promise<void> {
|
||||||
|
client.on(Events.MessageCreate, async (message: Message) => {
|
||||||
|
// Ignore messages from bots or non-guild messages
|
||||||
|
if (message.author.bot || !message.guild) return;
|
||||||
|
|
||||||
|
const content = message.content.toLowerCase();
|
||||||
|
|
||||||
|
// Grant role if user says "i use shsf"
|
||||||
|
if (content.includes("i use shsf")) {
|
||||||
|
const member = await message.guild.members
|
||||||
|
.fetch(message.author.id)
|
||||||
|
.catch(() => null);
|
||||||
|
if (!member) return;
|
||||||
|
|
||||||
|
// Check if the member already has the role
|
||||||
|
if (member.roles.cache.has(ROLES.I_USE_SHSF)) return;
|
||||||
|
|
||||||
|
await member.roles.add(ROLES.I_USE_SHSF);
|
||||||
|
await message.reply({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
title: "Role Granted!",
|
||||||
|
description:
|
||||||
|
"You have been given the **I Use SHSF** role.",
|
||||||
|
color: 0x00ff00,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Remove role if user says they dont use it
|
||||||
|
if (
|
||||||
|
content.includes("i don't use shsf") ||
|
||||||
|
content.includes("i dont use shsf") ||
|
||||||
|
content.includes("i do not use shsf")
|
||||||
|
) {
|
||||||
|
const member = await message.guild.members
|
||||||
|
.fetch(message.author.id)
|
||||||
|
.catch(() => null);
|
||||||
|
if (!member) return;
|
||||||
|
|
||||||
|
// Only remove if the member has the role
|
||||||
|
if (!member.roles.cache.has(ROLES.I_USE_SHSF)) return;
|
||||||
|
|
||||||
|
try {
|
||||||
|
await member.roles.remove(ROLES.I_USE_SHSF);
|
||||||
|
await message.reply({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
title: "Role Removed",
|
||||||
|
description:
|
||||||
|
"The **I Use SHSF** role has been removed from you.",
|
||||||
|
color: 0xff0000,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
} catch (error) {
|
||||||
|
console.error(
|
||||||
|
"Failed to remove I_USE_SHSF role from member:",
|
||||||
|
message.author.id,
|
||||||
|
error,
|
||||||
|
);
|
||||||
|
await message.reply({
|
||||||
|
embeds: [
|
||||||
|
{
|
||||||
|
title: "Error Removing Role",
|
||||||
|
description:
|
||||||
|
"I couldn't remove the **I Use SHSF** role. This may be due to missing permissions or a temporary issue. Please try again later or contact a server admin.",
|
||||||
|
color: 0xff0000,
|
||||||
|
},
|
||||||
|
],
|
||||||
|
});
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
}
|
||||||
Reference in New Issue
Block a user