djskage
Version:
A Discord.js extension for utility commands
93 lines (92 loc) • 3.88 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const discord_js_1 = require("discord.js");
const https = __importStar(require("https"));
const http = __importStar(require("http"));
const url_1 = require("url");
const pretty_1 = __importDefault(require("../utils/pretty"));
module.exports = {
name: "curl",
aliases: [],
description: "Curl a URL",
usage: "curl <url>",
execute: async (kage, client, message) => {
const args = message.content.split(/\s+/);
if (args.length < 2) {
return message.reply("Please provide a URL to curl.");
}
const urlString = args[2];
let urlObj;
try {
urlObj = new url_1.URL(urlString);
}
catch (error) {
return message.reply("Invalid URL.");
}
const protocol = urlObj.protocol === "https:" ? https : http;
protocol
.get(urlObj, (res) => {
let data = "";
res.on("data", (chunk) => {
data += chunk;
});
res.on("end", () => {
const embed = new discord_js_1.EmbedBuilder()
.setTitle(`CURL Result: ${urlString}`)
.setTimestamp(new Date());
if (res.headers["content-type"] === "application/json") {
let e = JSON.stringify(data, null, 2);
if (e.length > 3300) {
const file = new discord_js_1.AttachmentBuilder(pretty_1.default.json(data), {
name: "curl.json",
});
embed.setDescription("```" + e.slice(0, 3300) + "... (truncated)" + "```");
return message.reply({ embeds: [embed], files: [file] });
}
embed.setDescription("```" + e + "```");
return message.reply({ embeds: [embed] });
}
else if (res.headers["content-type"] === "text/html" && data.startsWith("<!DOCTYPE html>")) {
const file = new discord_js_1.AttachmentBuilder(pretty_1.default.html(data), {
name: "curl.html",
});
return message.reply({ files: [file] });
}
if (data.length > 1900) {
data = data.slice(0, 1900) + "... (truncated)";
}
embed.setDescription("```" + data + "```");
message.reply({ embeds: [embed] });
});
})
.on("error", (err) => {
message.reply(`Error fetching URL: ${err.message}`);
});
},
};