import { ApplicationCommandRegistry, Command } from "@sapphire/framework";
import { EmbedBuilder, type Message } from "discord.js";
import ms from "ms";
import os from "os";
export class UserCommand extends Command {
public constructor(context: Command.LoaderContext, options: Command.Options) {
super(context, {
...options,
name: "ping",
aliases: ["pong", "pingpong"],
description: "Replies with pong!",
fullCategory: ["General", "info"],
});
}
public override registerApplicationCommands(
registry: ApplicationCommandRegistry
) {
registry.registerChatInputCommand((builder) =>
builder.setName(this.name).setDescription(this.description)
);
}
public override async chatInputRun(
interaction: Command.ChatInputCommandInteraction
) {
const initialTime = Date.now();
const initialReply = await interaction.reply({
content: "๐ Pinging...",
});
const latency =
initialReply.createdTimestamp - interaction.createdTimestamp;
const apiLatency = Math.round(this.container.client.ws.ping);
const memoryUsage = (process.memoryUsage().heapUsed / 1024 / 1024).toFixed(
2
);
const totalMemory = (os.totalmem() / 1024 / 1024).toFixed(2);
const uptime = ms(this.container.client.uptime || 0);
const executionTime = `${Date.now() - initialTime}ms`;
const embed = new EmbedBuilder()
.setTitle("๐ Pong!")
.setDescription(
`๐ก Latency: \`${latency}ms\`. โก API Latency: \`${apiLatency}ms\`.`
)
.addFields(
{ name: "โฒ Bot Uptime", value: uptime, inline: true },
{
name: "๐พ Memory Usage",
value: `${memoryUsage} MB / ${totalMemory} MB`,
inline: true,
},
{
name: "โฑ Command Execution Time",
value: executionTime,
inline: true,
}
)
.setColor("#00FF00")
.setFooter({
text: `๐ Requested by ${interaction.user.tag}`,
iconURL: interaction.user.displayAvatarURL(),
})
.setTimestamp();
return initialReply.edit({ embeds: [embed], content: "" });
}
public async messageRun(interaction: Message) {
console.log("message run")
const initialTime = Date.now();
const initialReply = await interaction.reply({
content: "๐ Pinging...",
});
const latency =
initialReply.createdTimestamp - interaction.createdTimestamp;
const apiLatency = Math.round(this.container.client.ws.ping);
const memoryUsage = (process.memoryUsage().heapUsed / 1024 / 1024).toFixed(
2
);
const totalMemory = (os.totalmem() / 1024 / 1024).toFixed(2);
const uptime = ms(this.container.client.uptime || 0);
const executionTime = `${Date.now() - initialTime}ms`;
const embed = new EmbedBuilder()
.setTitle("๐ Pong!")
.setDescription(
`๐ก Latency: \`${latency}ms\`. โก API Latency: \`${apiLatency}ms\`.`
)
.addFields(
{ name: "โฒ Bot Uptime", value: uptime, inline: true },
{
name: "๐พ Memory Usage",
value: `${memoryUsage} MB / ${totalMemory} MB`,
inline: true,
},
{
name: "โฑ Command Execution Time",
value: executionTime,
inline: true,
}
)
.setColor("#00FF00")
.setFooter({
text: `๐ Requested by ${interaction.author.tag}`,
iconURL: interaction.author.displayAvatarURL(),
})
.setTimestamp();
return initialReply.edit({ embeds: [embed], content: "" });
}
}
import { ApplicationCommandRegistry, Command } from "@sapphire/framework";
import { EmbedBuilder, type Message } from "discord.js";
import ms from "ms";
import os from "os";
export class UserCommand extends Command {
public constructor(context: Command.LoaderContext, options: Command.Options) {
super(context, {
...options,
name: "ping",
aliases: ["pong", "pingpong"],
description: "Replies with pong!",
fullCategory: ["General", "info"],
});
}
public override registerApplicationCommands(
registry: ApplicationCommandRegistry
) {
registry.registerChatInputCommand((builder) =>
builder.setName(this.name).setDescription(this.description)
);
}
public override async chatInputRun(
interaction: Command.ChatInputCommandInteraction
) {
const initialTime = Date.now();
const initialReply = await interaction.reply({
content: "๐ Pinging...",
});
const latency =
initialReply.createdTimestamp - interaction.createdTimestamp;
const apiLatency = Math.round(this.container.client.ws.ping);
const memoryUsage = (process.memoryUsage().heapUsed / 1024 / 1024).toFixed(
2
);
const totalMemory = (os.totalmem() / 1024 / 1024).toFixed(2);
const uptime = ms(this.container.client.uptime || 0);
const executionTime = `${Date.now() - initialTime}ms`;
const embed = new EmbedBuilder()
.setTitle("๐ Pong!")
.setDescription(
`๐ก Latency: \`${latency}ms\`. โก API Latency: \`${apiLatency}ms\`.`
)
.addFields(
{ name: "โฒ Bot Uptime", value: uptime, inline: true },
{
name: "๐พ Memory Usage",
value: `${memoryUsage} MB / ${totalMemory} MB`,
inline: true,
},
{
name: "โฑ Command Execution Time",
value: executionTime,
inline: true,
}
)
.setColor("#00FF00")
.setFooter({
text: `๐ Requested by ${interaction.user.tag}`,
iconURL: interaction.user.displayAvatarURL(),
})
.setTimestamp();
return initialReply.edit({ embeds: [embed], content: "" });
}
public async messageRun(interaction: Message) {
console.log("message run")
const initialTime = Date.now();
const initialReply = await interaction.reply({
content: "๐ Pinging...",
});
const latency =
initialReply.createdTimestamp - interaction.createdTimestamp;
const apiLatency = Math.round(this.container.client.ws.ping);
const memoryUsage = (process.memoryUsage().heapUsed / 1024 / 1024).toFixed(
2
);
const totalMemory = (os.totalmem() / 1024 / 1024).toFixed(2);
const uptime = ms(this.container.client.uptime || 0);
const executionTime = `${Date.now() - initialTime}ms`;
const embed = new EmbedBuilder()
.setTitle("๐ Pong!")
.setDescription(
`๐ก Latency: \`${latency}ms\`. โก API Latency: \`${apiLatency}ms\`.`
)
.addFields(
{ name: "โฒ Bot Uptime", value: uptime, inline: true },
{
name: "๐พ Memory Usage",
value: `${memoryUsage} MB / ${totalMemory} MB`,
inline: true,
},
{
name: "โฑ Command Execution Time",
value: executionTime,
inline: true,
}
)
.setColor("#00FF00")
.setFooter({
text: `๐ Requested by ${interaction.author.tag}`,
iconURL: interaction.author.displayAvatarURL(),
})
.setTimestamp();
return initialReply.edit({ embeds: [embed], content: "" });
}
}