Tesy

🧩 Syntax:
const axios = require('axios');
const fs = require('fs');

module.exports = {
  config: {
    name: "mlhero",
    aliases: [],
    version: "1.0",
    author: "Jmlabaco",
    countDown: 5,
    role: 0,
    shortDescription: "Search for a hero in MLBB.",
    longDescription: "Search for a hero in Mobile Legends: Bang Bang by name.",
    category: "box chat",
    guide: "To use this command, type mlhero <hero_name>.",
    isPrefix: "both",
  },
  onStart: async function ({ api, event, args }) {
    if (args.length === 0) {
      return api.sendMessage("Please provide the name of the hero.", event.threadID);
    }
    const heroName = args.join(" ");
    const apiUrl = `https://apis-samir.onrender.com/mobile-legends/hero/${encodeURIComponent(heroName)}`;
    
    try {
      const response = await axios.get(apiUrl);
      const heroData = response.data;

      // Download and save the hero image
      const imageUrl = heroData.hero_img;
      const imageName = imageUrl.substring(imageUrl.lastIndexOf("/") + 1);
      const imagePath = __dirname + "/cache/" + imageName;
      const imageWriter = fs.createWriteStream(imagePath);
      const imageResponse = await axios.get(imageUrl, { responseType: 'stream' });
      imageResponse.data.pipe(imageWriter);
      
      // Once image is saved, prepare hero information message
      imageWriter.on('finish', () => {
        let heroInfoMessage = `**Hero Information:**\n`;
        heroInfoMessage += `Name: ${heroName}\n`;
        heroInfoMessage += `Release Date: ${heroData.release}\n`;
        heroInfoMessage += `Role: ${heroData.role}\n`;
        heroInfoMessage += `Specialty: ${heroData.specialty}\n`;
        heroInfoMessage += `Lane: ${heroData.lane}\n`;
        heroInfoMessage += `Price: ${heroData.price}\n`;
        heroInfoMessage += `**Gameplay Info:**\n`;
        heroInfoMessage += `Durability: ${heroData.gameplay_info.durability}\n`;
        heroInfoMessage += `Offense: ${heroData.gameplay_info.offense}\n`;
        heroInfoMessage += `Control Effect: ${heroData.gameplay_info.control_effect}\n`;
        heroInfoMessage += `Difficulty: ${heroData.gameplay_info.difficulty}\n`;
        heroInfoMessage += `**Story Info:**\n`;
        heroInfoMessage += `Origin: ${heroData.story_info_list.Origin}\n`;
        heroInfoMessage += `Gender: ${heroData.story_info_list.Gender}\n`;
        heroInfoMessage += `Species: ${heroData.story_info_list.Species}\n`;
        heroInfoMessage += `Occupation: ${heroData.story_info_list.Occupation}\n`;
        heroInfoMessage += `Fields of Study: ${heroData.story_info_list["Fields of study"]}\n`;
        heroInfoMessage += `Abilities: ${heroData.story_info_list.Abilities}\n`;
        heroInfoMessage += `Website: ${heroData.story_info_list.Website}\n`;
        heroInfoMessage += `Traits: ${heroData.story_info_list.Traits}\n`;
        heroInfoMessage += `Likes: ${heroData.story_info_list.Likes}\n`;
        
        // Send hero information message with the attached image
        api.sendMessage({
          body: heroInfoMessage,
          attachment: fs.createReadStream(imagePath)
        }, event.threadID, () => {
          // After sending message with attachment, delete the image file
          fs.unlink(imagePath, (err) => {
            if (err) {
              console.error("Error deleting image file:", err);
            }
          });
        });
      });
    } catch (error) {
      console.error("Error fetching or processing hero data:", error);
      api.sendMessage("An error occurred while fetching hero data.", event.threadID);
    }
  }
};