Skip to content

Commit 8b2b379

Browse files
authored
Merge pull request #17 from teamboostify/changed/dms-boost
Added a new embed when someone starts boosting
2 parents c1ed1d6 + c32bcb3 commit 8b2b379

13 files changed

Lines changed: 313 additions & 265 deletions

package-lock.json

Lines changed: 263 additions & 246 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

src/base/types/discord.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
import { Client, Collection } from "discord.js";
2+
import { Command } from "../classes/command.js";
3+
4+
export type DiscordClient = Client & { commands: Collection<string, Command> }

src/events/activityUpdate.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
1-
import { ActivityType, Client, Events } from "discord.js";
1+
import { ActivityType, Events } from "discord.js";
2+
import { DiscordClient } from "../base/types/discord.js";
23

34
function getStatus(guilds: number, users: number) {
45
const statuses = [
@@ -35,7 +36,7 @@ export default {
3536
name: Events.ClientReady,
3637
once: true,
3738

38-
execute(client: Client) {
39+
execute(client: DiscordClient) {
3940
if (!client.user) return;
4041

4142
const updatePresence = () => {

src/events/clientReady.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
1-
import { Client, Events } from "discord.js";
1+
import { Events } from "discord.js";
22
import { logger } from "../libs/logger.js";
3+
import { DiscordClient } from "../base/types/discord.js";
34

45
export default {
56
name: Events.ClientReady,
67
once: true,
7-
execute(client: Client) {
8+
execute(client: DiscordClient) {
89
if (!client.user) return;
910
logger.bot(`Ready! Logged in as ${client.user.tag}`);
1011
},

src/events/guildMemberUpdate.ts

Lines changed: 26 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
11
import "../libs/loadVariables.js";
22
import {
3-
Client,
3+
ContainerBuilder,
44
EmbedBuilder,
55
Events,
66
GuildMember,
7+
MessageFlags,
78
PermissionFlagsBits,
89
TextChannel,
910
} from "discord.js";
@@ -19,11 +20,13 @@ import {
1920
} from "../services/roleService.js";
2021
import { logger } from "../libs/logger.js";
2122
import { prisma } from "../libs/database.js";
23+
import { DiscordClient } from "../base/types/discord.js";
24+
import { SystemColors } from "../libs/colors.js";
2225

2326
export default {
2427
name: Events.GuildMemberUpdate,
2528
async execute(
26-
_client: Client,
29+
_client: DiscordClient,
2730
oldMember: GuildMember,
2831
newMember: GuildMember,
2932
) {
@@ -162,10 +165,27 @@ async function onBoostStart(member: GuildMember): Promise<void> {
162165
await safeSend(logChannel, { embeds: [logEmbed] });
163166

164167
try {
165-
await member.send(
166-
`Thank you for boosting the server! You now have access to booster perks.`,
167-
);
168-
} catch {}
168+
const serverImage = guild.iconURL();
169+
170+
const container = new ContainerBuilder().addSectionComponents(comp => {
171+
comp.addTextDisplayComponents(text =>
172+
text.setContent(
173+
`## Thanks for the boost! <a:booster:1527782487349268480>\n` +
174+
`Thank you for boosting the server **${guild.name}**\n\n`+
175+
`Your support helps us unlock new server perks and continue making this community even better for everyone.\n\n`+
176+
`We truly appreciate you being part of our journey. Enjoy your booster rewards! ✨`
177+
)
178+
);
179+
if (serverImage) {
180+
comp.setThumbnailAccessory(accessory => accessory.setURL(serverImage));
181+
}
182+
return comp;
183+
}).setAccentColor(SystemColors.main);
184+
await member.send({
185+
components: [container],
186+
flags: [MessageFlags.IsComponentsV2]
187+
});
188+
} catch { }
169189
}
170190

171191
async function onBoostEnd(member: GuildMember): Promise<void> {

src/events/helpautocomplete.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,9 @@
1-
import { AutocompleteInteraction, ChatInputCommandInteraction, Client, Collection, Events } from "discord.js";
2-
import { Command } from "../base/classes/command.js";
1+
import { AutocompleteInteraction, Events } from "discord.js";
2+
import { DiscordClient } from "../base/types/discord.js";
33

44
export default {
55
name: Events.InteractionCreate,
6-
async execute(client: Client & { commands: Collection<string, Command> }, interaction: AutocompleteInteraction) {
6+
async execute(client: DiscordClient, interaction: AutocompleteInteraction) {
77
if (!interaction.isAutocomplete()) return;
88
if (interaction.commandName != 'help') return;
99

src/events/interactionCreate.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,11 @@ import {
66
MessageFlags,
77
type InteractionReplyOptions,
88
} from "discord.js";
9+
import { DiscordClient } from "../base/types/discord.js";
910

1011
export default {
1112
name: Events.InteractionCreate,
12-
async execute(client: Client & { commands: any }, interaction: Interaction) {
13+
async execute(client: DiscordClient, interaction: Interaction) {
1314
if (
1415
interaction.type !== InteractionType.ApplicationCommand ||
1516
!interaction.isChatInputCommand()

src/events/onServerAdd.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,11 @@
11
import { ButtonBuilder, ButtonStyle, Client, ContainerBuilder, Events, Guild, MessageFlags } from "discord.js";
22
import { logger } from "../libs/logger.js";
33
import { SystemColors } from "../libs/colors.js";
4+
import { DiscordClient } from "../base/types/discord.js";
45

56
export default {
67
name: Events.GuildCreate,
7-
async execute(client: Client, guild: Guild,) {
8+
async execute(client: DiscordClient, guild: Guild,) {
89
logger.custom(`Added to the server with ID ${guild.id}`, "ADDED", "magenta");
910
try {
1011
const owner = await guild.fetchOwner();

src/events/roleCleanup.ts

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,12 +1,13 @@
11
import { Client, Events } from "discord.js";
22
import { processDueCustomRoleDeletions } from "../services/customRoleCleanup.js";
3+
import { DiscordClient } from "../base/types/discord.js";
34

45
const CUSTOM_ROLE_CLEANUP_MS = 60 * 60 * 1000;
56

67
export default {
78
name: Events.ClientReady,
89
once: true,
9-
execute(client: Client) {
10+
execute(client: DiscordClient) {
1011
if (!client.user) return;
1112

1213
void processDueCustomRoleDeletions(client);

0 commit comments

Comments
 (0)