Advertisement
samiroexpikachu

Anilist

Jul 12th, 2024 (edited)
131
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. const axios = require('axios');
  2.  
  3. module.exports = {
  4.   config: {
  5.     name: "anilist",
  6.     aliases: ["al"],
  7.     author: "Samir Œ",
  8.     version: "1.0",
  9.     countDown: 80,
  10.     role: 0,
  11.     shortDescription: "Fetches anime and manga stats from AniList",
  12.     longDescription: "Fetches anime and manga stats from AniList for a given user",
  13.     category: "Anime & Manga",
  14.     guide: {
  15.       en: "/anilist [username]\nFetches anime and manga stats from AniList for the specified username"
  16.     }
  17.   },
  18.  
  19.   langs: {
  20.     en: {
  21.       loading: "Fetching AniList data, please wait...",
  22.       error: "An error occurred while fetching AniList data. Please try again later."
  23.     }
  24.   },
  25.  
  26.   onStart: async function ({ event, message, getLang, threadsData, api, args }) {
  27.     const { threadID } = event;
  28.  
  29.     const username = args[0];
  30.     if (!username) {
  31.       return message.reply(`Please provide a username.`);
  32.     } else {
  33.       try {
  34.         let msgSend = message.reply(getLang("loading"));
  35.         const url = `https://samirxpikachu.onrender.com/anilist/user/${username}`;
  36.         const response = await axios.get(url);
  37.         const data = response.data;
  38.  
  39.         const recentActivity = data.recentActivity.map(activity => {
  40.           const title = activity.media.title.english || activity.media.title.romaji || activity.media.title.native;
  41.           const status = activity.status.replace('read chapter', 'read chapter').replace('watched episode', 'watched episode').replace('plans to watch', 'plans to watch');
  42.           const progress = activity.progress;
  43.           return `${status} "${title}" (${progress})`;
  44.         }).join('\n\n');
  45.  
  46.         const animeStats = data.stats.anime;
  47.         const mangaStats = data.stats.manga;
  48.  
  49.         const statsOutput = `
  50. Recent Activity:
  51. ${recentActivity}
  52.  
  53. Stats:
  54. Anime Stats:
  55. - Count: ${animeStats.count}
  56. - Mean Score: ${animeStats.meanScore}
  57. - Minutes Watched: ${animeStats.minutesWatched}
  58.  
  59. Manga Stats:
  60. - Count: ${mangaStats.count}
  61. - Mean Score: ${mangaStats.meanScore}
  62. - Chapters Read: ${mangaStats.chaptersRead}
  63. `;
  64.  
  65.         await message.unsend((await msgSend).messageID);
  66.         message.reply({
  67.           body: statsOutput,
  68.           attachment: await global.utils.getStreamFromURL(`https://samirxpikachu.onrender.com/view/${username}`)
  69.         });
  70.       } catch (error) {
  71.         console.error('Error fetching AniList data:', error);
  72.         return message.reply(getLang("error"));
  73.       }
  74.     }
  75.   }
  76. };
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement