Advertisement
Guest User

Untitled

a guest
Jan 24th, 2020
80
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.80 KB | None | 0 0
  1. bot.hear(/^(?:помянем)\s?([^]+)?/i, async (message) => {
  2. const start_command = performance.now();
  3. let data = await fs.readFileSync(`./gravestone.jpg`);
  4. let link_data;
  5. if (message.args[1]) {
  6. let user_name = await message.args[1].replace(/(^\s*)|(\s*)$/g, '').replace(`https://vk.com/`, ``).replace(`http://vk.com/`, ``);
  7. try {
  8. link_data = await vk.snippets.resolveResource(user_name);
  9. } catch (error) {
  10. link_data = undefined;
  11. }
  12. } else if (message.replyMessage) {
  13. let id_reply = await message.replyMessage.senderId;
  14. try {
  15. link_data = await vk.snippets.resolveResource(id_reply);
  16. } catch (error) {
  17. link_data = undefined;
  18. }
  19. } else if (message.forwards.length === 1) {
  20. let id_reply = await message.forwards[0].senderId;
  21. try {
  22. link_data = await vk.snippets.resolveResource(id_reply);
  23. } catch (error) {
  24. link_data = undefined;
  25. }
  26. } else {
  27. return await message.send_message(`не указан человек которого надо помянуть.`);
  28. }
  29. if (!link_data || link_data.type !== `user` || link_data === undefined) return await message.send_message(`не найден человек :с`);
  30. let average_time = 0;
  31. for (let i in config.time_to_rip) {
  32. average_time += config.time_to_rip[i];
  33. }
  34. average_time = average_time / config.time_to_rip.length;
  35. message.send(`Подождите секундочку...\nВозможно это займёт несколько минут...\nСреднее время выполнения операции: ≈ ${average_time.toFixed(2)} ms`);
  36. let [user_info] = await vk.api.users.get({ user_ids: link_data.id, fields: `photo_max_orig, bdate, screen_name`, name_case: `Nom` });
  37. async function callback(data, message) {
  38. let send_data = data;
  39. const { createCanvas, loadImage, registerFont } = require('canvas');
  40.  
  41. function parse_date(date) {
  42. if (!date) return `??.??.????`;
  43. let new_date = date.split(`.`);
  44. if (new_date[0] < 10) new_date[0] = `0${new_date[0]}`;
  45. if (new_date[1] < 10) new_date[1] = `0${new_date[1]}`;
  46. if (new_date[2] < 10) new_date[2] = `0${new_date[2]}`;
  47. if (!new_date[0]) new_date[0] = `??`;
  48. if (!new_date[1]) new_date[1] = `??`;
  49. if (!new_date[2]) new_date[2] = `????`;
  50. return new_date.join(`.`);
  51. }
  52. const parse_bdate = await parse_date(user_info.bdate);
  53. const die_user_image = await loadImage(user_info.photo_max_orig);
  54.  
  55. function gray(imgObj) {
  56. let imgW = imgObj.width;
  57. let imgH = imgObj.height;
  58. let temp_canvas = createCanvas(imgW, imgH);
  59. var canvasContext = temp_canvas.getContext('2d');
  60. canvasContext.drawImage(imgObj, 0, 0);
  61. var imgPixels = canvasContext.getImageData(0, 0, imgW, imgH);
  62. for (var y = 0; y < imgPixels.height; y++) {
  63. for (var x = 0; x < imgPixels.width; x++) {
  64. var i = (y * 4) * imgPixels.width + x * 4;
  65. var avg = (imgPixels.data[i] + imgPixels.data[i + 1] + imgPixels.data[i + 2]) / 3;
  66. imgPixels.data[i] = avg;
  67. imgPixels.data[i + 1] = avg;
  68. imgPixels.data[i + 2] = avg;
  69. }
  70. }
  71. canvasContext.putImageData(imgPixels, 0, 0, 0, 0, imgPixels.width, imgPixels.height);
  72. return temp_canvas.toBuffer();
  73. }
  74. const new_die_user_image = await loadImage(await gray(die_user_image)).then((image) => {
  75. const canvas = createCanvas();
  76. const ctx = canvas.getContext("2d");
  77. canvas.height = image.height;
  78. canvas.width = image.width;
  79. ctx.beginPath();
  80. ctx.arc(350 / 2, 350 / 2, 350 / 2, 0, Math.PI * 2, true);
  81. ctx.closePath();
  82. ctx.fill();
  83. ctx.globalCompositeOperation = 'source-in';
  84. ctx.drawImage(image, 0, 0, 350, 350);
  85. return canvas;
  86. });
  87. const canvas = createCanvas(1500, 1042);
  88. const ctx = canvas.getContext('2d');
  89. let user_data_in_bot = users.find(x => x.id === link_data.id);
  90. await loadImage(send_data).then(async (image) => {
  91. ctx.drawImage(image, 0, 0);
  92. ctx.drawImage(new_die_user_image, 575, 110);
  93. ctx.font = '50px Calibri';
  94. ctx.textAlign = `center`;
  95. ctx.fillText(`${user_info.first_name} ${user_info.last_name}`, 750, 511);
  96. ctx.fillText(`@${user_info.screen_name}`, 750, 571);
  97. ctx.fillText(`${parse_bdate} - ${time_function.current_date()}`, 750, 631);
  98. if (user_data_in_bot && user_data_in_bot.nickname != user_info.first_name) {
  99. if (user_data_in_bot.nickname.length)
  100. ctx.fillText(`Он был известен как ` + user_data_in_bot.nickname, 750, 700);
  101. }
  102. let new_send_data = canvas.toBuffer();
  103. return await message.sendPhotos(new_send_data);
  104. });
  105. }
  106. await callback(data, message);
  107. const end_command = performance.now();
  108. config.time_to_rip.push(end_command - start_command);
  109. return;
  110. });
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement