blob: 33f1651409f36ae723046305025b225d3502e0d3 [file] [log] [blame]
import { getCommandMentionByName } from "./../utils/getCommandDataByName.js";
import convertCurlyBracketString from "../utils/convertCurlyBracketString.js";
import client from "../utils/client.js";
import EmojiEmbed from "../utils/generateEmojiEmbed.js";
import { GuildChannel, GuildMember, BaseGuildTextChannel } from "discord.js";
import singleNotify from "../utils/singleNotify.js";
export async function callback(member: GuildMember) {
if (member.user.bot) return;
const config = await client.database.guilds.read(member.guild.id);
if (!config.welcome.enabled) return;
if (config.welcome.channel) {
let string = config.welcome.message;
if (string) {
string = await convertCurlyBracketString(
string,
member.id,
member.displayName,
member.guild.name,
member.guild.members
);
if (config.welcome.channel === "dm") {
await member.send({
embeds: [new EmojiEmbed().setDescription(string).setStatus("Success")]
});
} else {
const channel: GuildChannel | null = (await member.guild.channels.fetch(
config.welcome.channel
)) as GuildChannel | null;
if (!channel)
return await singleNotify(
"welcomeChannelDeleted",
member.guild.id,
`The welcome channel has been deleted or is no longer accessible. Use ${getCommandMentionByName(
"settings/welcome"
)} to set a new one`,
"Warning"
);
if (!(channel instanceof BaseGuildTextChannel)) return;
if (channel.guild.id !== member.guild.id) return;
try {
await channel.send({
embeds: [new EmojiEmbed().setDescription(string).setStatus("Success")],
content: (config.welcome.ping ? `<@&${config.welcome.ping}>` : "") + `<@${member.id}>`
});
} catch (err) {
await singleNotify(
"welcomeChannelDeleted",
member.guild.id,
`The welcome channel has been deleted or is no longer accessible. Use ${getCommandMentionByName(
"settings/welcome"
)} to set a new one`,
"Warning"
);
}
}
}
}
}