30 lines
No EOL
1 KiB
JavaScript
30 lines
No EOL
1 KiB
JavaScript
const urlRegex = /(?:\w+:)?\/\/(\S+)/;
|
|
const puppeteer = require("puppeteer-core");
|
|
const fetch = require("node-fetch");
|
|
|
|
exports.run = async (message, args) => {
|
|
message.channel.sendTyping();
|
|
if (args.length === 0) return `${message.author.mention}, you need to provide a URL to screenshot!`;
|
|
const getEndpoint = await fetch(`http://${process.env.NODE_ENV === "development" ? "192.168.99.100" : "172.17.0.2"}:9222/json/version`);
|
|
const endpoint = await getEndpoint.json();
|
|
const url = urlRegex.test(args[0]) ? args[0] : `http://${args[0]}`;
|
|
const browser = await puppeteer.connect({
|
|
browserWSEndpoint: endpoint.webSocketDebuggerUrl,
|
|
defaultViewport: {
|
|
width: 1280,
|
|
height: 720
|
|
}
|
|
});
|
|
const page = await browser.newPage();
|
|
await page.goto(url);
|
|
const screenshot = await page.screenshot();
|
|
await page.close();
|
|
return message.channel.createMessage("", {
|
|
file: screenshot,
|
|
name: "screenshot.png"
|
|
});
|
|
};
|
|
|
|
exports.aliases = ["webshot", "ss", "shot", "page"];
|
|
exports.category = 1;
|
|
exports.help = "Screenshots a webpage"; |