diff --git a/src/commands/anime.ts b/src/commands/anime.ts
index ad08231..a0bb926 100644
--- a/src/commands/anime.ts
+++ b/src/commands/anime.ts
@@ -1,46 +1,88 @@
import { SlashCommandBuilder } from "discord.js"
import { ICommand } from "interfaces"
-import search from "./anime/search"
import { devMessage, embedColor } from "config/options"
+import { anilist } from "anilist"
+import { capitalizeFirstLetter } from "utils/functions/funcs"
export = {
name: "anime",
description: "Anime subcommands",
public: true,
- dev: true,
+ dev: false,
subcommands: true,
data: new SlashCommandBuilder()
.setName("anime")
- .setDescription("Anime subcommands")
- .addSubcommand(subcommand =>
- subcommand
- .setName("search")
- .setDescription("Search for an anime")
- .addStringOption(option =>
- option
- .setName("query")
- .setDescription("The anime to search for")
- .setRequired(true)
- )
+ .setDescription("Search for anime using anilist API")
+ .addStringOption(option =>
+ option
+ .setName("query")
+ .setDescription("The anime to search for")
+ .setRequired(true)
)
.setDMPermission(false),
async execute(interaction) {
- const subcommand = interaction.options.getSubcommand()
+ await interaction.deferReply()
+ const query = interaction.options.getString("query")!
- if (subcommand === "search") {
- search(interaction)
- return
+ const data = anilist.query.media()
+ .arguments({ search: query, type: "ANIME" })
+ .withTitles("english", "romaji")
+ .withDescription()
+ .withCoverImage("medium")
+ .withDuration()
+ .withGenres()
+ .withAverageScore()
+ .withMeanScore()
+ .withEpisodes()
+ .withId()
+ .withStartDate("year", "month", "day")
+ .withEndDate("year", "month", "day")
+ .withSeason()
+ .withSiteUrl()
+ const anime = await data.fetch()
+
+ if (!anime) {
+ await interaction.editReply({
+ embeds: [{
+ description: "No anime found",
+ color: embedColor
+ }]
+ })
}
- await interaction.reply({
+ const romaji = anime.title?.romaji || "Romaji not available"
+ const english = anime.title?.english || "English not available"
+ const animeDescription = anime.description?.replaceAll("
", "\n").slice(0, 256) + "..." || "No description available"
+ const animeEpisodesRaw = anime.episodes + " episodes" + " | " + anime.duration + " minute episodes"
+ const animeEpisodes = anime.episodes ? animeEpisodesRaw : "No episodes available"
+ const animeStartDate = [anime.startDate?.day || "??", anime.startDate?.month || "??", anime.startDate?.year || "????"].join(".")
+ const animeEndDate = [anime.endDate?.day || "??", anime.endDate?.month || "??", anime.endDate?.year || "????"].join(".")
+ const animeSeasonRaw = capitalizeFirstLetter(anime.season ?? "null") + " " + anime.startDate?.year
+ const animeSeason = anime.season ? animeSeasonRaw : "No season available"
+
+ await interaction.editReply({
embeds: [{
- description: "This command is currently under development",
+ title: romaji + " | " + english,
+ url: anime.siteUrl || "",
+ description: `
+ **Description:** ${animeDescription}
+
+ **Genres:** ${anime.genres.join(", ")}
+ **Avg. Score:** ${anime.averageScore || "No score available"}
+ **Mean Score:** ${anime.meanScore || "No score available"}
+ **Episodes:** ${animeEpisodes || "No episodes available"}
+ **Season:** ${animeSeason}
+ **Start Date:** ${animeStartDate}
+ **End Date:** ${animeEndDate}
+ `,
color: embedColor,
+ thumbnail: {
+ url: anime.coverImage?.medium || ""
+ },
footer: {
- text: interaction.guild!.name + " | " + devMessage,
- icon_url: interaction.guild!.iconURL() || undefined
+ text: "ID: " + anime.id + " | " + devMessage
}
}]
})
diff --git a/src/commands/anime/search.ts b/src/commands/anime/search.ts
deleted file mode 100644
index b78a43a..0000000
--- a/src/commands/anime/search.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-import { ChatInputCommandInteraction } from "discord.js"
-import { anilist } from "anilist"
-import { embedColor } from "config/options"
-import { capitalizeFirstLetter } from "utils/functions/funcs"
-
-export default async function search(interaction: ChatInputCommandInteraction) {
- await interaction.deferReply()
- const query = interaction.options.getString("query")!
-
- const data = anilist.query.media()
- .arguments({ search: query, type: "ANIME" })
- .withTitles("english", "romaji")
- .withDescription()
- .withCoverImage("medium")
- .withDuration()
- .withGenres()
- .withAverageScore()
- .withMeanScore()
- .withEpisodes()
- .withId()
- .withStartDate("year", "month", "day")
- .withEndDate("year", "month", "day")
- .withSeason()
- const anime = await data.fetch()
-
- if (!anime) {
- await interaction.editReply({
- embeds: [{
- description: "No anime found",
- color: embedColor
- }]
- })
- }
-
- const romaji = anime.title?.romaji || "Romaji not available"
- const english = anime.title?.english || "English not available"
- const animeDescription = anime.description?.replaceAll("
", "\n").slice(0, 256) + "..." || "No description available"
- const animeEpisodesRaw = anime.episodes + " episodes" + " | " + anime.duration + " minute episodes"
- const animeEpisodes = anime.episodes ? animeEpisodesRaw : "No episodes available"
- const animeStartDate = [anime.startDate?.day || "??", anime.startDate?.month || "??", anime.startDate?.year || "????"].join(".")
- const animeEndDate = [anime.endDate?.day || "??", anime.endDate?.month || "??", anime.endDate?.year || "????"].join(".")
- const animeSeasonRaw = capitalizeFirstLetter(anime.season ?? "null") + " " + anime.startDate?.year
- const animeSeason = anime.season ? animeSeasonRaw : "No season available"
-
- await interaction.editReply({
- embeds: [{
- title: romaji + " | " + english,
- description: `
- **Description:** ${animeDescription}
-
- **Genres:** ${anime.genres.join(", ")}
- **Avg. Score:** ${anime.averageScore || "No score available"}
- **Mean Score:** ${anime.meanScore || "No score available"}
- **Episodes:** ${animeEpisodes || "No episodes available"}
- **Season:** ${animeSeason}
- **Start Date:** ${animeStartDate}
- **End Date:** ${animeEndDate}
- `,
- color: embedColor,
- thumbnail: {
- url: anime.coverImage?.medium || ""
- },
- footer: {
- text: "ID: " + anime.id
- }
- }]
- })
-}
\ No newline at end of file
diff --git a/src/commands/botinfo.ts b/src/commands/botinfo.ts
index 998c105..f293550 100644
--- a/src/commands/botinfo.ts
+++ b/src/commands/botinfo.ts
@@ -17,6 +17,7 @@ export = {
.setDMPermission(false),
async execute(interaction, client) {
+ const { default: prettyMs } = await import("pretty-ms")
const castedDeps = dependencies as { [key: string]: string }
const castedDevDeps = devDependencies as { [key: string]: string }
let osInfo: string
@@ -55,7 +56,7 @@ export = {
> **Discord.js Version:** \`${(castedDeps["discord.js"]).replace("^", "")}\`
> **Dependencies (${Object.keys(castedDeps).length}):** \`${deps}\`
> **Dev Dependencies (${Object.keys(castedDevDeps).length}):** \`${devDeps}\`
- > **Uptime:** \`${Math.floor(client.uptime! / 1000 / 60)} minutes\`
+ > **Uptime:** \`${prettyMs(client.uptime!, { verbose: true })}\`
__**Cache**__
> **Guilds:** \`${client.guilds.cache.size}\`