← back to browse
goat command

time

Show current time

0
views
0
likes
0
installs
raw source
const { createCanvas } = require('canvas');
const fs = require("fs-extra");
const path = require("path");

module.exports = {
  config: {
    name: "time",
    version: "0.0.7",
    author: "Azadx69x",
    role: 0,
    shortDescription: "Show current time",
    longDescription: "Generates image with current time and date",
    category: "utility",
    guide: "{pn} time"
  },

  onStart: async function ({ message, event, api }) {
    try {
      const now = new Date();
      const bangladeshTime = new Date(now.toLocaleString('en-US', { timeZone: 'Asia/Dhaka' }));
      
      const timeString = bangladeshTime.toLocaleTimeString("en-US", {
        hour: "2-digit",
        minute: "2-digit",
        second: "2-digit",
        hour12: true
      });
      
      const weekDays = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
      const englishDay = weekDays[bangladeshTime.getDay()];
      
      const englishMonths = [
        'January', 'February', 'March', 'April', 'May', 'June',
        'July', 'August', 'September', 'October', 'November', 'December'
      ];
      
      const date = bangladeshTime.getDate();
      const month = englishMonths[bangladeshTime.getMonth()];
      const year = bangladeshTime.getFullYear();
      const englishDate = `${date} ${month}, ${year}`;
      
      const canvas = createCanvas(1920, 1080);
      const ctx = canvas.getContext("2d");
      
      const gradient = ctx.createLinearGradient(0, 0, 1920, 1080);
      gradient.addColorStop(0, "#1a1a2e");
      gradient.addColorStop(0.5, "#16213e");
      gradient.addColorStop(1, "#0f3460");
      ctx.fillStyle = gradient;
      ctx.fillRect(0, 0, 1920, 1080);
      
      ctx.globalAlpha = 0.1;
      for (let i = 0; i < 50; i++) {
        ctx.beginPath();
        ctx.arc(200 + i * 30, 800 + i * 10, 100, 0, Math.PI * 2);
        ctx.fillStyle = "#ffffff";
        ctx.fill();
      }
      ctx.globalAlpha = 1;
      
      ctx.shadowColor = "rgba(0, 0, 0, 0.5)";
      ctx.shadowBlur = 30;
      ctx.shadowOffsetX = 5;
      ctx.shadowOffsetY = 5;
      
      ctx.fillStyle = "rgba(255, 255, 255, 0.1)";
      ctx.strokeStyle = "rgba(255, 255, 255, 0.2)";
      ctx.lineWidth = 2;
      
      ctx.beginPath();
      ctx.rect(300, 200, 1320, 680);
      ctx.fill();
      ctx.stroke();
      
      ctx.shadowBlur = 15;
      ctx.textAlign = "center";
      
      ctx.font = "40px Arial";
      ctx.fillStyle = "rgba(255, 255, 255, 0.7)";
      ctx.fillText("BANGLADESH TIME", 960, 280);
      
      ctx.font = "bold 200px Arial";
      ctx.fillStyle = "#ffffff";
      ctx.fillText(timeString, 960, 500);
      
      ctx.font = "bold 60px Arial";
      ctx.fillStyle = "#87CEEB";
      ctx.fillText(englishDay, 960, 600);
      
      ctx.font = "50px Arial";
      ctx.fillStyle = "#D3D3D3";
      ctx.fillText(englishDate, 960, 680);
      
      ctx.strokeStyle = "rgba(255, 255, 255, 0.3)";
      ctx.lineWidth = 2;
      ctx.beginPath();
      ctx.moveTo(760, 720);
      ctx.lineTo(1160, 720);
      ctx.stroke();
      
      ctx.font = "35px Arial";
      ctx.fillStyle = "#98FB98";
      ctx.fillText("Dhaka, Bangladesh", 960, 780);
      
      ctx.font = "30px Arial";
      ctx.fillStyle = "rgba(255, 255, 255, 0.6)";
      ctx.fillText("chudling pong", 960, 850);
      
      ctx.font = "25px Arial";
      ctx.fillStyle = "rgba(255, 255, 255, 0.3)";
      ctx.fillText("• • •", 960, 950);

      ctx.shadowBlur = 0;
      ctx.shadowColor = "transparent";
      
      const cacheDir = path.join(__dirname, "cache");
      fs.ensureDirSync(cacheDir);
      const outputPath = path.join(cacheDir, `time_${Date.now()}.png`);
      
      const buffer = canvas.toBuffer('image/png');
      fs.writeFileSync(outputPath, buffer);
      
      await message.reply({
        attachment: fs.createReadStream(outputPath)
      });
      
      setTimeout(() => {
        try {
          if (fs.existsSync(outputPath)) {
            fs.unlinkSync(outputPath);
          }
        } catch (e) {}
      }, 5000);

    } catch (err) {
      console.error("Time command error:", err);
      await message.reply("Error generating time image!\n" + err.message);
    }
  }
};

View raw file