Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
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
1 change: 1 addition & 0 deletions src/base/types/types.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1 @@
export type ChalkColors = "black" | "red" | "green" | "yellow" | "blue" | "magenta" | "cyan" | "white" | "blackBright" | "gray" | "grey" | "redBright" | "greenBright" | "yellowBright" | "blueBright" | "magentaBright" | "cyanBright" | "whiteBright"
1 change: 1 addition & 0 deletions src/events/guildMemberUpdate.ts
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@ export default {
oldMember: GuildMember,
newMember: GuildMember,
) {
if (oldMember.user.bot) return;
try {
if (oldMember.partial) oldMember = await oldMember.fetch();
if (newMember.partial) newMember = await newMember.fetch();
Expand Down
40 changes: 40 additions & 0 deletions src/events/onServerAdd.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
import { ButtonBuilder, ButtonStyle, Client, ContainerBuilder, Events, Guild, MessageFlags } from "discord.js";
import { logger } from "../libs/logger.js";
import { SystemColors } from "../libs/colors.js";

export default {
name: Events.GuildCreate,
async execute(guild: Guild, client: Client) {
logger.custom(`Added to the server with ID ${guild.id}`, "ADDED", "magenta");
try {
const owner = await guild.fetchOwner();
const avatarUrl = client.user!.displayAvatarURL({ size: 1024 });

const termsBtn = new ButtonBuilder().setLabel('Terms of Service').setURL('https://boostify.breaddevv.cc/terms').setStyle(ButtonStyle.Link);
const privacy = new ButtonBuilder().setLabel('Privacy Policy').setURL('https://boostify.breaddevv.cc/privacy').setStyle(ButtonStyle.Link);
const github = new ButtonBuilder().setLabel('Our Repository').setURL('https://boostify.breaddevv.cc/github').setStyle(ButtonStyle.Link);

const container = new ContainerBuilder().addSectionComponents(comp =>
comp
.addTextDisplayComponents(text =>
text.setContent(
`## Thank you for adding me!\n` +
`Hi! I'm Boostify! An open-source boosting bot to help you manage your server perks alongside your community!\n` +
`Use some of the links below to have a better knowledge about me!`
)
)
.setThumbnailAccessory(accessory => accessory.setURL(avatarUrl))
)
.addTextDisplayComponents(text => text.setContent(`-# You're receiving this text because you/other member added me to the server **${guild.name}** β€” In which you're the owner!`))
.addActionRowComponents(row => row.addComponents(termsBtn, privacy, github))
.setAccentColor(SystemColors.main);

await owner.send({
components: [container],
flags: MessageFlags.IsComponentsV2
});
} catch (err) {
logger.error(`Failed fetching owner & dmming them on server: ${guild.id}: ${err}`);
}
}
};
8 changes: 6 additions & 2 deletions src/libs/logger.ts
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
import chalk from "chalk";
import chalk, { Chalk } from "chalk";
import { ChalkColors } from "../base/types/types.js";

const timestamp = () => chalk.dim(`${new Date().toISOString()}`);

Expand Down Expand Up @@ -36,5 +37,8 @@ export const logger = {
},
success: (message: string, ...args: any[]) => {
console.log(`${timestamp()} ${chalk.green("βœ“")} ${message}`, ...args);
}
},
custom: (message: string, title: string, color: ChalkColors = "green", ...args: any[]) => {
console.log(`${timestamp()} ${chalk[color](title.toUpperCase())} ${message}`, ...args)
}
};
Loading