Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
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
7 changes: 6 additions & 1 deletion src/constants/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,10 @@ export const autoRole = [
"637279136343261184"
];

export const boosterRole = "626710421654732800";
export const premiumRole = "733634632800665651";
export const donatorRole = "919783888631504946";

export enum Emojis {
YES = "<:yes:990955540802863104>",
NO = "<:no:990955538831536200>"
Expand All @@ -18,7 +22,8 @@ export enum Guild {
}

export enum Channels {
SUGGESTION = "799607782071992330"
SUGGESTION = "799607782071992330",
BOOSTER = "643734634722623509"
}

export enum Images {
Expand Down
19 changes: 17 additions & 2 deletions src/listeners/guildMemberUpdate.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
import { ApplyOptions } from "@sapphire/decorators";
import { Listener } from "@sapphire/framework";
import { GuildMember } from "discord.js";
import { autoRole, Guild } from "../constants";
import { GuildMember, GuildMemberRoleManager } from "discord.js";
import { autoRole, boosterRole, premiumRole, donatorRole, Guild, Channels } from "../constants";

@ApplyOptions<Listener.Options>({
event: "guildMemberUpdate"
Expand All @@ -17,6 +17,21 @@ export class GuildMemberUpdateListener extends Listener {
await newMember.roles.add(role, "Auto-role after accepting rules screening");
}
}

/**
* Check if member boosted the server
*/
const hadRole = oldMember.roles.cache.has(boosterRole);
const hasRole = newMember.roles.cache.has(boosterRole);
const isPremium = newMember.roles.cache.has(premiumRole);
const isDonator = newMember.roles.cache.has(donatorRole);
if (!hadRole && hasRole) {
const channel = await newMember.guild.channels.fetch(Channels.BOOSTER)
if (channel?.isText()) await channel?.send(`Thank you ${newMember.user} for boosting Anime World Indonesia!`);
if (!isPremium) await newMember.roles.add(premiumRole, "Add AWI Premium after boosting");
} else if (hadRole && !hasRole && isPremium && !isDonator) {
await newMember.roles.remove(premiumRole, "Removed AWI Premium after losing boost");
}
}
}
}