Skip to content

Commit

Permalink
Merge pull request #81 from clienterrverse/es6-rewrite
Browse files Browse the repository at this point in the history
bug fix
  • Loading branch information
GrishMahat authored Sep 8, 2024
2 parents 4a7a380 + aaccec4 commit f33728b
Show file tree
Hide file tree
Showing 2 changed files with 59 additions and 45 deletions.
49 changes: 33 additions & 16 deletions src/commands/misc/ping.js
Original file line number Diff line number Diff line change
Expand Up @@ -30,9 +30,10 @@ export default {
const getPingColor = (ping) =>
ping < 150 ? '#00ff00' : ping < 250 ? '#ffff00' : '#ff0000';

client.commandStats ??= { pingCount: 0, totalPing: 0 };
client.commandStats ??= { pingCount: 0, totalPing: 0, totalCommands: 0 };
client.commandStats.pingCount++;
client.commandStats.totalPing += apiPing;
client.commandStats.totalCommands++;

const averagePing = (
client.commandStats.totalPing / client.commandStats.pingCount
Expand All @@ -42,34 +43,48 @@ export default {
: 'Bot not ready';

const { heapUsed, rss } = process.memoryUsage();
const totalMem = os.totalmem() / 1024 / 1024;
const freeMem = os.freemem() / 1024 / 1024;
const systemUptime = os.uptime();

const stats = [
{ name: '📡 Bot Latency', value: `${latency}ms` },
{ name: '🌐 API Latency', value: `${apiPing}ms` },
{ name: '📊 Average Ping', value: `${averagePing}ms` },
{ name: '⏱️ Uptime', value: uptime },
{ name: '🏓 **Bot Latency**', value: `\`${latency}ms\`` },
{ name: '🌐 **API Latency**', value: `\`${apiPing}ms\`` },
{ name: '📊 **Average Ping**', value: `\`${averagePing}ms\`` },
{ name: '⏳ **Uptime**', value: `\`${uptime}\`` },
{
name: '🖥️ Memory Usage',
value: `${(heapUsed / 1024 / 1024).toFixed(2)} MB / ${(rss / 1024 / 1024).toFixed(2)} MB`,
name: '💾 **Memory Usage**',
value: `\`${(heapUsed / 1024 / 1024).toFixed(2)} MB / ${(rss / 1024 / 1024).toFixed(2)} MB\``,
},
{ name: '📚 Discord.js Version', value: discordJsVersion },
{ name: '🛠️ Node.js Version', value: process.version },
{
name: '⚙️ System Uptime',
value: formatDistanceToNow(Date.now() - systemUptime * 1000, {
name: '🧠 **System Memory**',
value: `\`Total: ${totalMem.toFixed(2)} MB, Free: ${freeMem.toFixed(2)} MB\``,
},
{ name: '📚 **Discord.js Version**', value: `\`${discordJsVersion}\`` },
{ name: '🛠️ **Node.js Version**', value: `\`${process.version}\`` },
{
name: '⚙️ **System Uptime**',
value: `\`${formatDistanceToNow(Date.now() - systemUptime * 1000, {
addSuffix: true,
}),
})}\``,
},
{
name: '💻 **OS Info**',
value: `\`${os.type()} ${os.release()}\``,
},
{
name: '🔢 Command Usage',
value: `${client.commandStats.pingCount}`,
name: '🖥️ **CPU Info**',
value: `\`${os.cpus()[0].model} (${os.cpus().length} cores)\``,
},
{
name: '🔢 **Command Usage**',
value: `\`Total Executed: ${client.commandStats.totalCommands}\``,
},
];

const pongEmbed = new EmbedBuilder()
.setColor(getPingColor(apiPing))
.setTitle('🏓 Pong!')
.setTitle('🏓 **Pong!**')
.addFields(stats.map((stat) => ({ ...stat, inline: true })))
.setFooter({
text: `Requested by ${interaction.user.username}`,
Expand All @@ -80,8 +95,10 @@ export default {
await interaction.editReply({ embeds: [pongEmbed] });
} catch (error) {
console.error('Error in ping command:', error);


await interaction.editReply(
'An error occurred while processing the command. Please try again later.'
'An error occurred while processing the command. Please try again later.'
);
}
},
Expand Down
55 changes: 26 additions & 29 deletions src/events/guildMemberAdd/welcom.js
Original file line number Diff line number Diff line change
Expand Up @@ -7,24 +7,15 @@ import { fileURLToPath } from 'url';
const __filename = fileURLToPath(import.meta.url);
const __dirname = path.dirname(__filename);

const BACKGROUND_PATH = path.join(
__dirname,
'..',
'..',
'assets',
'welcome.png'
);
const BACKGROUND_PATH = path.join(__dirname, '..', '..', 'assets', 'welcome.png');
const DEFAULT_WELCOME_MESSAGE = 'Welcome to our server, {user}!';

export default async (client, errorHandler, member) => {
try {
const welcomeSettings = await getWelcomeSettings(member.guild.id);
if (!welcomeSettings?.enabled) return;

const { welcomeChannel, autoRole } = await getGuildResources(
member.guild,
welcomeSettings
);
const { welcomeChannel, autoRole } = await getGuildResources(member.guild, welcomeSettings);
if (!welcomeChannel) return;

const welcomeImage = await generateWelcomeImage(member);
Expand All @@ -33,14 +24,11 @@ export default async (client, errorHandler, member) => {
await sendWelcomeMessage(welcomeChannel, member, embed, welcomeImage);
if (autoRole) await assignAutoRole(member, autoRole);
} catch (error) {
errorHandler.handleError(error, {
type: 'Welcome Event',
memberId: member.id,
guildId: member.guild.id,
});
handleError(errorHandler, error, 'Welcome Event', member);
}
};

// Fetch welcome settings from the database
async function getWelcomeSettings(guildId) {
try {
return await Welcome.findOne({ guildId });
Expand All @@ -50,25 +38,23 @@ async function getWelcomeSettings(guildId) {
}
}

// Get the welcome channel and auto-role based on settings
async function getGuildResources(guild, welcomeSettings) {
const welcomeChannel = guild.channels.cache.get(welcomeSettings.channelId);
const autoRole = guild.roles.cache.get(welcomeSettings.roleId);

if (!welcomeChannel) {
console.warn(
`Welcome channel with ID ${welcomeSettings.channelId} not found in guild ${guild.id}.`
);
console.warn(`Welcome channel with ID ${welcomeSettings.channelId} not found in guild ${guild.id}.`);
}

if (!autoRole) {
console.warn(
`Auto role with ID ${welcomeSettings.roleId} not found in guild ${guild.id}.`
);
console.warn(`Auto role with ID ${welcomeSettings.roleId} not found in guild ${guild.id}.`);
}

return { welcomeChannel, autoRole };
}

// Generate the welcome image using the profileImage function
async function generateWelcomeImage(member) {
try {
return await profileImage(member.user.id, {
Expand All @@ -81,14 +67,15 @@ async function generateWelcomeImage(member) {
}
}

// Create the welcome embed with the specified settings
function createWelcomeEmbed(member, welcomeSettings, welcomeImage) {
const welcomeMessage = (welcomeSettings.message || DEFAULT_WELCOME_MESSAGE)
.replace('{user}', `<@${member.id}>`);

const embed = new EmbedBuilder()
.setColor('#0099ff')
.setTitle(`Welcome to ${member.guild.name}!`)
.setDescription(
welcomeSettings.message?.replace('{user}', `<@${member.id}>`) ||
DEFAULT_WELCOME_MESSAGE.replace('{user}', `<@${member.id}>`)
)
.setDescription(welcomeMessage)
.setTimestamp()
.setFooter({ text: `Joined: ${member.joinedAt.toUTCString()}` });

Expand All @@ -99,16 +86,15 @@ function createWelcomeEmbed(member, welcomeSettings, welcomeImage) {
return embed;
}

// Send the welcome message to the specified channel
async function sendWelcomeMessage(channel, member, embed, welcomeImage) {
const messageOptions = {
content: `Hey everyone, please welcome <@${member.id}>!`,
embeds: [embed],
};

if (welcomeImage) {
const attachment = new AttachmentBuilder(welcomeImage, {
name: 'welcome-image.png',
});
const attachment = new AttachmentBuilder(welcomeImage, { name: 'welcome-image.png' });
messageOptions.files = [attachment];
}

Expand All @@ -119,10 +105,21 @@ async function sendWelcomeMessage(channel, member, embed, welcomeImage) {
}
}

// Assign the auto-role to the new member
async function assignAutoRole(member, role) {
try {
await member.roles.add(role);
} catch (error) {
console.error(`Error assigning auto role to member ${member.id}:`, error);
}
}

// Handle errors and log them appropriately
function handleError(errorHandler, error, eventType, member) {
console.error(`Error in ${eventType} for member ${member.id}:`, error);
errorHandler.handleError(error, {
type: eventType,
memberId: member.id,
guildId: member.guild.id,
});
}

0 comments on commit f33728b

Please sign in to comment.