Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- bot.hear(/^(?:помянем)\s?([^]+)?/i, async (message) => {
- const start_command = performance.now();
- let data = await fs.readFileSync(`./gravestone.jpg`);
- let link_data;
- if (message.args[1]) {
- let user_name = await message.args[1].replace(/(^\s*)|(\s*)$/g, '').replace(`https://vk.com/`, ``).replace(`http://vk.com/`, ``);
- try {
- link_data = await vk.snippets.resolveResource(user_name);
- } catch (error) {
- link_data = undefined;
- }
- } else if (message.replyMessage) {
- let id_reply = await message.replyMessage.senderId;
- try {
- link_data = await vk.snippets.resolveResource(id_reply);
- } catch (error) {
- link_data = undefined;
- }
- } else if (message.forwards.length === 1) {
- let id_reply = await message.forwards[0].senderId;
- try {
- link_data = await vk.snippets.resolveResource(id_reply);
- } catch (error) {
- link_data = undefined;
- }
- } else {
- return await message.send_message(`не указан человек которого надо помянуть.`);
- }
- if (!link_data || link_data.type !== `user` || link_data === undefined) return await message.send_message(`не найден человек :с`);
- let average_time = 0;
- for (let i in config.time_to_rip) {
- average_time += config.time_to_rip[i];
- }
- average_time = average_time / config.time_to_rip.length;
- message.send(`Подождите секундочку...\nВозможно это займёт несколько минут...\nСреднее время выполнения операции: ≈ ${average_time.toFixed(2)} ms`);
- let [user_info] = await vk.api.users.get({ user_ids: link_data.id, fields: `photo_max_orig, bdate, screen_name`, name_case: `Nom` });
- async function callback(data, message) {
- let send_data = data;
- const { createCanvas, loadImage, registerFont } = require('canvas');
- function parse_date(date) {
- if (!date) return `??.??.????`;
- let new_date = date.split(`.`);
- if (new_date[0] < 10) new_date[0] = `0${new_date[0]}`;
- if (new_date[1] < 10) new_date[1] = `0${new_date[1]}`;
- if (new_date[2] < 10) new_date[2] = `0${new_date[2]}`;
- if (!new_date[0]) new_date[0] = `??`;
- if (!new_date[1]) new_date[1] = `??`;
- if (!new_date[2]) new_date[2] = `????`;
- return new_date.join(`.`);
- }
- const parse_bdate = await parse_date(user_info.bdate);
- const die_user_image = await loadImage(user_info.photo_max_orig);
- function gray(imgObj) {
- let imgW = imgObj.width;
- let imgH = imgObj.height;
- let temp_canvas = createCanvas(imgW, imgH);
- var canvasContext = temp_canvas.getContext('2d');
- canvasContext.drawImage(imgObj, 0, 0);
- var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH);
- for (var y = 0; y < imgPixels.height; y++) {
- for (var x = 0; x < imgPixels.width; x++) {
- var i = (y * 4) * imgPixels.width + x * 4;
- var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
- imgPixels.data[i] = avg;
- imgPixels.data[i + 1] = avg;
- imgPixels.data[i + 2] = avg;
- }
- }
- canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
- return temp_canvas.toBuffer();
- }
- const new_die_user_image = await loadImage(await gray(die_user_image)).then((image) => {
- const canvas = createCanvas();
- const ctx = canvas.getContext("2d");
- canvas.height = image.height;
- canvas.width = image.width;
- ctx.beginPath();
- ctx.arc(350 / 2, 350 / 2, 350 / 2, 0, Math.PI * 2, true);
- ctx.closePath();
- ctx.fill();
- ctx.globalCompositeOperation = 'source-in';
- ctx.drawImage(image, 0, 0, 350, 350);
- return canvas;
- });
- const canvas = createCanvas(1500, 1042);
- const ctx = canvas.getContext('2d');
- let user_data_in_bot = users.find(x => x.id === link_data.id);
- await loadImage(send_data).then(async (image) => {
- ctx.drawImage(image, 0, 0);
- ctx.drawImage(new_die_user_image, 575, 110);
- ctx.font = '50px Calibri';
- ctx.textAlign = `center`;
- ctx.fillText(`${user_info.first_name} ${user_info.last_name}`, 750, 511);
- ctx.fillText(`@${user_info.screen_name}`, 750, 571);
- ctx.fillText(`${parse_bdate} - ${time_function.current_date()}`, 750, 631);
- if (user_data_in_bot && user_data_in_bot.nickname != user_info.first_name) {
- if (user_data_in_bot.nickname.length)
- ctx.fillText(`Он был известен как ` + user_data_in_bot.nickname, 750, 700);
- }
- let new_send_data = canvas.toBuffer();
- return await message.sendPhotos(new_send_data);
- });
- }
- await callback(data, message);
- const end_command = performance.now();
- config.time_to_rip.push(end_command - start_command);
- return;
- });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement