mirror of
https://github.com/JonnyBro/JaBa.git
synced 2024-11-22 05:04:58 +05:00
v3.2.6
Новые карточки Фикс goodbye Удалены лишние шрифты
This commit is contained in:
parent
d48719612a
commit
b079cfaabc
16 changed files with 141 additions and 137 deletions
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Before Width: | Height: | Size: 9.2 KiB After Width: | Height: | Size: 6.2 KiB |
|
@ -88,7 +88,7 @@ class Goodbye extends Command {
|
||||||
if (!goodbye.channel) {
|
if (!goodbye.channel) {
|
||||||
const channel = await Resolvers.resolveChannel({
|
const channel = await Resolvers.resolveChannel({
|
||||||
message: msg,
|
message: msg,
|
||||||
channelType: "text"
|
channelType: "GUILD_TEXT"
|
||||||
});
|
});
|
||||||
if (!channel) return message.error("misc:INVALID_CHANNEL");
|
if (!channel) return message.error("misc:INVALID_CHANNEL");
|
||||||
|
|
||||||
|
|
|
@ -193,6 +193,17 @@
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-md-12">
|
<div class="col-md-12">
|
||||||
<pre class="brush: html">
|
<pre class="brush: html">
|
||||||
|
-----------------------------------------------------------------------------------------
|
||||||
|
JaBa v3.2.6
|
||||||
|
-----------------------------------------------------------------------------------------
|
||||||
|
Исправления
|
||||||
|
- Команда goodbye снова работает.
|
||||||
|
|
||||||
|
Изменено
|
||||||
|
- Новые карточки при входе и выходе пользователей
|
||||||
|
(Я не дизайнер, не бейте :( ).
|
||||||
|
- Обновлена локализация для карточек.
|
||||||
|
|
||||||
-----------------------------------------------------------------------------------------
|
-----------------------------------------------------------------------------------------
|
||||||
JaBa v3.2.5
|
JaBa v3.2.5
|
||||||
-----------------------------------------------------------------------------------------
|
-----------------------------------------------------------------------------------------
|
||||||
|
|
|
@ -30,10 +30,14 @@ module.exports = class {
|
||||||
};
|
};
|
||||||
|
|
||||||
const thanksEmbed = new Discord.MessageEmbed()
|
const thanksEmbed = new Discord.MessageEmbed()
|
||||||
.setAuthor({ name: "Спасибо что добавили меня на свой сервер!" })
|
.setAuthor({
|
||||||
|
name: "Спасибо что добавили меня на свой сервер!"
|
||||||
|
})
|
||||||
.setDescription(`Для настроек используйте \`${data.config.prefix}help\` и посмотрите на административные команды!\nЧтобы изменить язык используйте \`${this.client.config.prefix}setlang [язык]\`.`)
|
.setDescription(`Для настроек используйте \`${data.config.prefix}help\` и посмотрите на административные команды!\nЧтобы изменить язык используйте \`${this.client.config.prefix}setlang [язык]\`.`)
|
||||||
.setColor(data.config.embed.color)
|
.setColor(data.config.embed.color)
|
||||||
.setFooter({ text: data.config.embed.footer })
|
.setFooter({
|
||||||
|
text: data.config.embed.footer
|
||||||
|
})
|
||||||
.setTimestamp();
|
.setTimestamp();
|
||||||
messageOptions.embed = thanksEmbed;
|
messageOptions.embed = thanksEmbed;
|
||||||
|
|
||||||
|
@ -41,9 +45,11 @@ module.exports = class {
|
||||||
|
|
||||||
const text = `Зашёл на сервер **${guild.name}**. На нём **${guild.members.cache.filter((m) => !m.user.bot).size}** пользователей (из них ${guild.members.cache.filter((m) => m.user.bot).size} ботов)`;
|
const text = `Зашёл на сервер **${guild.name}**. На нём **${guild.members.cache.filter((m) => !m.user.bot).size}** пользователей (из них ${guild.members.cache.filter((m) => m.user.bot).size} ботов)`;
|
||||||
|
|
||||||
// Sends log embed in the logs channel
|
|
||||||
const logsEmbed = new Discord.MessageEmbed()
|
const logsEmbed = new Discord.MessageEmbed()
|
||||||
.setAuthor({ name: guild.name, iconURL: guild.iconURL()})
|
.setAuthor({
|
||||||
|
name: guild.name,
|
||||||
|
iconURL: guild.iconURL()
|
||||||
|
})
|
||||||
.setColor("#32CD32")
|
.setColor("#32CD32")
|
||||||
.setDescription(text);
|
.setDescription(text);
|
||||||
this.client.channels.cache.get(data.config.support.logs).send(logsEmbed);
|
this.client.channels.cache.get(data.config.support.logs).send(logsEmbed);
|
||||||
|
|
|
@ -10,7 +10,10 @@ module.exports = class {
|
||||||
|
|
||||||
// Sends log embed in the logs channel
|
// Sends log embed in the logs channel
|
||||||
const embed = new Discord.MessageEmbed()
|
const embed = new Discord.MessageEmbed()
|
||||||
.setAuthor({ name: guild.name, iconURL: guild.iconURL()})
|
.setAuthor({
|
||||||
|
name: guild.name,
|
||||||
|
iconURL: guild.iconURL()
|
||||||
|
})
|
||||||
.setColor("#B22222")
|
.setColor("#B22222")
|
||||||
.setDescription(text);
|
.setDescription(text);
|
||||||
this.client.channels.cache.get(this.client.config.support.logs).send(embed);
|
this.client.channels.cache.get(this.client.config.support.logs).send(embed);
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
const Canvas = require("canvas"),
|
const Canvas = require("canvas"),
|
||||||
Discord = require("discord.js"),
|
Discord = require("discord.js"),
|
||||||
stringCleaner = require("@sindresorhus/slugify"),
|
|
||||||
{ resolve } = require("path");
|
{ resolve } = require("path");
|
||||||
|
|
||||||
// Register assets fonts
|
// Register assets fonts
|
||||||
Canvas.registerFont(resolve("./assets/fonts/RubikMonoOne-Regular.ttf"), { family: "RubikMonoOne" });
|
Canvas.registerFont(resolve("./assets/fonts/RubikMonoOne-Regular.ttf"), { family: "RubikMonoOne" });
|
||||||
Canvas.registerFont(resolve("./assets/fonts/KeepCalm-Medium.ttf"), { family: "KeepCalm" });
|
Canvas.registerFont(resolve("./assets/fonts/KeepCalm-Medium.ttf"), { family: "KeepCalm" });
|
||||||
|
|
||||||
const applyText = (canvas, text, defaultFontSize) => {
|
const applyText = (canvas, text, defaultFontSize, width, font) => {
|
||||||
const ctx = canvas.getContext("2d");
|
const ctx = canvas.getContext("2d");
|
||||||
do {
|
do {
|
||||||
ctx.font = `${defaultFontSize -= 10}px RubikMonoOne`;
|
ctx.font = `${(defaultFontSize -= 1)}px ${font}`;
|
||||||
} while (ctx.measureText(text).width > 600);
|
} while (ctx.measureText(text).width > width);
|
||||||
|
|
||||||
return ctx.font;
|
return ctx.font;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -58,92 +58,88 @@ module.exports = class {
|
||||||
const canvas = Canvas.createCanvas(1024, 450),
|
const canvas = Canvas.createCanvas(1024, 450),
|
||||||
ctx = canvas.getContext("2d");
|
ctx = canvas.getContext("2d");
|
||||||
|
|
||||||
// Background image
|
// Draw background
|
||||||
const background = await Canvas.loadImage("./assets/img/greetings_background.png");
|
const background = await Canvas.loadImage("./assets/img/greetings_background.png");
|
||||||
|
|
||||||
// This uses the canvas dimensions to stretch the image onto the entire canvas
|
|
||||||
ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
|
ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
|
||||||
|
|
||||||
|
// Draw layer
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
|
ctx.globalAlpha = "0.4";
|
||||||
|
ctx.fillRect(0, 0, 25, canvas.height);
|
||||||
|
ctx.fillRect(canvas.width - 25, 0, 25, canvas.height);
|
||||||
|
ctx.fillRect(25, 0, canvas.width - 50, 25);
|
||||||
|
ctx.fillRect(25, canvas.height - 25, canvas.width - 50, 25);
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
|
ctx.globalAlpha = "0.4";
|
||||||
|
ctx.fillRect(344, canvas.height - 296, 625, 65);
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
|
ctx.globalAlpha = "0.4";
|
||||||
|
ctx.fillRect(389, canvas.height - 225, 138, 65);
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
|
ctx.globalAlpha = "0.4";
|
||||||
|
ctx.fillRect(308, canvas.height - 110, 672, 65);
|
||||||
|
|
||||||
// Draw username
|
// Draw username
|
||||||
ctx.fillStyle = "#ffffff";
|
ctx.globalAlpha = 1;
|
||||||
const username = stringCleaner(member.user.username, {
|
ctx.fillStyle = "#FFFFFF";
|
||||||
separator: " ",
|
ctx.font = applyText(canvas, member.user.username, 48, 600, "RubikMonoOne");
|
||||||
lowercase: false,
|
ctx.fillText(member.user.username, canvas.width - 670, canvas.height - 250);
|
||||||
decamelize: false,
|
|
||||||
preserveLeadingUnderscore: true,
|
|
||||||
});
|
|
||||||
ctx.font = applyText(canvas, username, 50);
|
|
||||||
ctx.fillText(username, canvas.width - 660, canvas.height - 250);
|
|
||||||
|
|
||||||
// Draw server name
|
// Draw server name
|
||||||
ctx.font = applyText(canvas, member.guild.translate("administration/welcome:IMG_WELCOME", {
|
ctx.font = applyText(canvas, member.guild.translate("administration/welcome:IMG_WELCOME", {
|
||||||
server: member.guild.name
|
server: member.guild.name
|
||||||
}), 53);
|
}), 53, 625, "RubikMonoOne");
|
||||||
|
|
||||||
ctx.fillText(member.guild.translate("administration/welcome:IMG_WELCOME", {
|
ctx.fillText(member.guild.translate("administration/welcome:IMG_WELCOME", {
|
||||||
server: member.guild.name
|
server: member.guild.name
|
||||||
}), canvas.width - 690, canvas.height - 85);
|
}), canvas.width - 700, canvas.height - 70);
|
||||||
|
|
||||||
// Draw discriminator
|
// Draw discriminator
|
||||||
ctx.font = "35px RubikMonoOne";
|
ctx.font = "35px RubikMonoOne";
|
||||||
ctx.fillText(member.user.discriminator, canvas.width - 624, canvas.height - 180);
|
ctx.fillText(member.user.discriminator, canvas.width - 623, canvas.height - 178);
|
||||||
|
|
||||||
// Draw number
|
// Draw membercount
|
||||||
ctx.font = "22px RubikMonoOne";
|
ctx.font = "22px RubikMonoOne";
|
||||||
ctx.fillText(member.guild.translate("administration/welcome:IMG_NB", {
|
ctx.fillText(member.guild.translate("administration/welcome:IMG_NB", {
|
||||||
memberCount: member.guild.memberCount
|
memberCount: member.guild.memberCount
|
||||||
}), 50, canvas.height - 50);
|
}), 40, canvas.height - 35);
|
||||||
|
|
||||||
// Draw # for discriminator
|
// Draw # for discriminator
|
||||||
ctx.fillStyle = "#44d14a";
|
ctx.fillStyle = "#FFFFFF";
|
||||||
ctx.font = "70px RubikMonoOne";
|
ctx.font = "70px RubikMonoOne";
|
||||||
ctx.fillText("#", canvas.width - 690, canvas.height - 165);
|
ctx.fillText("#", canvas.width - 690, canvas.height - 165);
|
||||||
|
|
||||||
// Draw Title with gradient
|
// Draw title
|
||||||
ctx.font = "65px RubikMonoOne";
|
ctx.font = "45px RubikMonoOne";
|
||||||
ctx.strokeStyle = "#1d2124";
|
ctx.strokeStyle = "#000000";
|
||||||
ctx.lineWidth = 15;
|
ctx.lineWidth = 10;
|
||||||
ctx.strokeText(member.guild.translate("administration/welcome:TITLE"), canvas.width - 670, canvas.height - 330);
|
ctx.strokeText(member.guild.translate("administration/welcome:TITLE"), canvas.width - 670, canvas.height - 330);
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
var gradient = ctx.createLinearGradient(canvas.width - 780, 0, canvas.width - 30, 0);
|
|
||||||
gradient.addColorStop(0, "#e15500");
|
|
||||||
gradient.addColorStop(1, "#e7b121");
|
|
||||||
ctx.fillStyle = gradient;
|
|
||||||
ctx.fillText(member.guild.translate("administration/welcome:TITLE"), canvas.width - 670, canvas.height - 330);
|
ctx.fillText(member.guild.translate("administration/welcome:TITLE"), canvas.width - 670, canvas.height - 330);
|
||||||
|
|
||||||
// Pick up the pen
|
// Draw avatar circle
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
|
|
||||||
//Define Stroke Line
|
|
||||||
ctx.lineWidth = 10;
|
ctx.lineWidth = 10;
|
||||||
|
ctx.strokeStyle = "#FFFFFF";
|
||||||
//Define Stroke Style
|
|
||||||
ctx.strokeStyle = "#03A9F4";
|
|
||||||
|
|
||||||
// Start the arc to form a circle
|
|
||||||
ctx.arc(180, 225, 135, 0, Math.PI * 2, true);
|
ctx.arc(180, 225, 135, 0, Math.PI * 2, true);
|
||||||
|
|
||||||
// Draw Stroke
|
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
|
|
||||||
// Put the pen down
|
|
||||||
ctx.closePath();
|
ctx.closePath();
|
||||||
|
|
||||||
// Clip off the region you drew on
|
|
||||||
ctx.clip();
|
ctx.clip();
|
||||||
|
const avatar = await Canvas.loadImage(member.user.displayAvatarURL({
|
||||||
const options = {
|
|
||||||
format: "png",
|
format: "png",
|
||||||
size: 512
|
size: 512
|
||||||
},
|
}));
|
||||||
avatar = await Canvas.loadImage(member.user.displayAvatarURL(options));
|
|
||||||
|
|
||||||
// Move the image downwards vertically and constrain its height to 200, so it"s a square
|
|
||||||
ctx.drawImage(avatar, 45, 90, 270, 270);
|
ctx.drawImage(avatar, 45, 90, 270, 270);
|
||||||
|
|
||||||
const attachment = new Discord.MessageAttachment(canvas.toBuffer(), "welcome-image.png");
|
const attachment = new Discord.MessageAttachment(canvas.toBuffer(), "welcome-image.png");
|
||||||
channel.send({ content: message, files: [attachment] });
|
channel.send({
|
||||||
|
content: message,
|
||||||
|
files: [attachment]
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
channel.send({ content: message });
|
channel.send({
|
||||||
|
content: message
|
||||||
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -1,17 +1,17 @@
|
||||||
const Canvas = require("canvas"),
|
const Canvas = require("canvas"),
|
||||||
Discord = require("discord.js"),
|
Discord = require("discord.js"),
|
||||||
stringCleaner = require("@sindresorhus/slugify"),
|
|
||||||
{ resolve } = require("path");
|
{ resolve } = require("path");
|
||||||
|
|
||||||
// Register assets fonts
|
// Register assets fonts
|
||||||
Canvas.registerFont(resolve("./assets/fonts/RubikMonoOne-Regular.ttf"), { family: "RubikMonoOne" });
|
Canvas.registerFont(resolve("./assets/fonts/RubikMonoOne-Regular.ttf"), { family: "RubikMonoOne" });
|
||||||
Canvas.registerFont(resolve("./assets/fonts/KeepCalm-Medium.ttf"), { family: "KeepCalm" });
|
Canvas.registerFont(resolve("./assets/fonts/KeepCalm-Medium.ttf"), { family: "KeepCalm" });
|
||||||
|
|
||||||
const applyText = (canvas, text, defaultFontSize) => {
|
const applyText = (canvas, text, defaultFontSize, width, font) => {
|
||||||
const ctx = canvas.getContext("2d");
|
const ctx = canvas.getContext("2d");
|
||||||
do {
|
do {
|
||||||
ctx.font = `${defaultFontSize -= 10}px RubikMonoOne`;
|
ctx.font = `${(defaultFontSize -= 1)}px ${font}`;
|
||||||
} while (ctx.measureText(text).width > 600);
|
} while (ctx.measureText(text).width > width);
|
||||||
|
|
||||||
return ctx.font;
|
return ctx.font;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -41,91 +41,88 @@ module.exports = class {
|
||||||
const canvas = Canvas.createCanvas(1024, 450),
|
const canvas = Canvas.createCanvas(1024, 450),
|
||||||
ctx = canvas.getContext("2d");
|
ctx = canvas.getContext("2d");
|
||||||
|
|
||||||
// Background image
|
// Draw background
|
||||||
const background = await Canvas.loadImage("./assets/img/greetings_background.png");
|
const background = await Canvas.loadImage("./assets/img/greetings_background.png");
|
||||||
|
|
||||||
// This uses the canvas dimensions to stretch the image onto the entire canvas
|
|
||||||
ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
|
ctx.drawImage(background, 0, 0, canvas.width, canvas.height);
|
||||||
|
|
||||||
|
// Draw layer
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
|
ctx.globalAlpha = "0.4";
|
||||||
|
ctx.fillRect(0, 0, 25, canvas.height);
|
||||||
|
ctx.fillRect(canvas.width - 25, 0, 25, canvas.height);
|
||||||
|
ctx.fillRect(25, 0, canvas.width - 50, 25);
|
||||||
|
ctx.fillRect(25, canvas.height - 25, canvas.width - 50, 25);
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
|
ctx.globalAlpha = "0.4";
|
||||||
|
ctx.fillRect(344, canvas.height - 296, 625, 65);
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
|
ctx.globalAlpha = "0.4";
|
||||||
|
ctx.fillRect(389, canvas.height - 225, 138, 65);
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
|
ctx.globalAlpha = "0.4";
|
||||||
|
ctx.fillRect(308, canvas.height - 110, 672, 65);
|
||||||
|
|
||||||
// Draw username
|
// Draw username
|
||||||
ctx.fillStyle = "#ffffff";
|
ctx.globalAlpha = 1;
|
||||||
const username = stringCleaner(member.user.username, {
|
ctx.fillStyle = "#FFFFFF";
|
||||||
separator: " ",
|
ctx.font = applyText(canvas, member.user.username, 48, 600, "RubikMonoOne");
|
||||||
lowercase: false,
|
ctx.fillText(member.user.username, canvas.width - 670, canvas.height - 250);
|
||||||
decamelize: false,
|
|
||||||
preserveLeadingUnderscore: true,
|
|
||||||
});
|
|
||||||
ctx.font = applyText(canvas, username, 50);
|
|
||||||
ctx.fillText(username, canvas.width - 660, canvas.height - 250);
|
|
||||||
|
|
||||||
// Draw server name
|
// Draw server name
|
||||||
ctx.font = applyText(canvas, member.guild.translate("administration/goodbye:IMG_GOODBYE", {
|
ctx.font = applyText(canvas, member.guild.translate("administration/goodbye:IMG_GOODBYE", {
|
||||||
server: member.guild.name
|
server: member.guild.name
|
||||||
}), 53);
|
}), 53, 625, "RubikMonoOne");
|
||||||
|
|
||||||
ctx.fillText(member.guild.translate("administration/goodbye:IMG_GOODBYE", {
|
ctx.fillText(member.guild.translate("administration/goodbye:IMG_GOODBYE", {
|
||||||
server: member.guild.name
|
server: member.guild.name
|
||||||
}), canvas.width - 690, canvas.height - 65);
|
}), canvas.width - 700, canvas.height - 70);
|
||||||
|
|
||||||
// Draw discriminator
|
// Draw discriminator
|
||||||
ctx.font = "35px RubikMonoOne";
|
ctx.font = "35px RubikMonoOne";
|
||||||
ctx.fillText(member.user.discriminator, canvas.width - 624, canvas.height - 180);
|
ctx.fillText(member.user.discriminator, canvas.width - 623, canvas.height - 178);
|
||||||
// Draw number
|
|
||||||
|
// Draw membercount
|
||||||
ctx.font = "22px RubikMonoOne";
|
ctx.font = "22px RubikMonoOne";
|
||||||
ctx.fillText(member.guild.translate("administration/goodbye:IMG_NB", {
|
ctx.fillText(member.guild.translate("administration/goodbye:IMG_NB", {
|
||||||
memberCount: member.guild.memberCount
|
memberCount: member.guild.memberCount
|
||||||
}), 50, canvas.height - 50);
|
}), 40, canvas.height - 35);
|
||||||
|
|
||||||
// Draw # for discriminator
|
// Draw # for discriminator
|
||||||
ctx.fillStyle = "#44d14a";
|
ctx.fillStyle = "#FFFFFF";
|
||||||
ctx.font = "70px RubikMonoOne";
|
ctx.font = "70px RubikMonoOne";
|
||||||
ctx.fillText("#", canvas.width - 690, canvas.height - 165);
|
ctx.fillText("#", canvas.width - 690, canvas.height - 165);
|
||||||
|
|
||||||
// Draw Title with gradient
|
// Draw title
|
||||||
ctx.font = "65px RubikMonoOne";
|
ctx.font = "45px RubikMonoOne";
|
||||||
ctx.strokeStyle = "#1d2124";
|
ctx.strokeStyle = "#000000";
|
||||||
ctx.lineWidth = 15;
|
ctx.lineWidth = 10;
|
||||||
ctx.strokeText(member.guild.translate("administration/goodbye:TITLE"), canvas.width - 670, canvas.height - 330);
|
ctx.strokeText(member.guild.translate("administration/goodbye:TITLE"), canvas.width - 670, canvas.height - 330);
|
||||||
|
ctx.fillStyle = "#FFFFFF";
|
||||||
var gradient = ctx.createLinearGradient(canvas.width - 780, 0, canvas.width - 30, 0);
|
|
||||||
gradient.addColorStop(0, "#e15500");
|
|
||||||
gradient.addColorStop(1, "#e7b121");
|
|
||||||
ctx.fillStyle = gradient;
|
|
||||||
ctx.fillText(member.guild.translate("administration/goodbye:TITLE"), canvas.width - 670, canvas.height - 330);
|
ctx.fillText(member.guild.translate("administration/goodbye:TITLE"), canvas.width - 670, canvas.height - 330);
|
||||||
|
|
||||||
// Pick up the pen
|
// Draw avatar circle
|
||||||
ctx.beginPath();
|
ctx.beginPath();
|
||||||
|
|
||||||
//Define Stroke Line
|
|
||||||
ctx.lineWidth = 10;
|
ctx.lineWidth = 10;
|
||||||
|
ctx.strokeStyle = "#FFFFFF";
|
||||||
//Define Stroke Style
|
|
||||||
ctx.strokeStyle = "#df0909";
|
|
||||||
|
|
||||||
// Start the arc to form a circle
|
|
||||||
ctx.arc(180, 225, 135, 0, Math.PI * 2, true);
|
ctx.arc(180, 225, 135, 0, Math.PI * 2, true);
|
||||||
|
|
||||||
// Draw Stroke
|
|
||||||
ctx.stroke();
|
ctx.stroke();
|
||||||
|
|
||||||
// Put the pen down
|
|
||||||
ctx.closePath();
|
ctx.closePath();
|
||||||
|
|
||||||
// Clip off the region you drew on
|
|
||||||
ctx.clip();
|
ctx.clip();
|
||||||
|
const avatar = await Canvas.loadImage(member.user.displayAvatarURL({
|
||||||
const options = {
|
|
||||||
format: "png",
|
format: "png",
|
||||||
size: 512
|
size: 512
|
||||||
},
|
}));
|
||||||
avatar = await Canvas.loadImage(member.user.displayAvatarURL(options));
|
|
||||||
|
|
||||||
// Move the image downwards vertically and constrain its height to 200, so it"s a square
|
|
||||||
ctx.drawImage(avatar, 45, 90, 270, 270);
|
ctx.drawImage(avatar, 45, 90, 270, 270);
|
||||||
|
|
||||||
const attachment = new Discord.MessageAttachment(canvas.toBuffer(), "goodbye-image.png");
|
const attachment = new Discord.MessageAttachment(canvas.toBuffer(), "goodbye-image.png");
|
||||||
channel.send({ content: message, files: [attachment] });
|
channel.send({
|
||||||
|
content: message,
|
||||||
|
files: [attachment]
|
||||||
|
});
|
||||||
} else {
|
} else {
|
||||||
channel.send({ content: message });
|
channel.send({
|
||||||
|
content: message
|
||||||
|
});
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
|
@ -59,10 +59,8 @@ module.exports = class {
|
||||||
if (uSlowmode) {
|
if (uSlowmode) {
|
||||||
if (uSlowmode.time > Date.now()) {
|
if (uSlowmode.time > Date.now()) {
|
||||||
message.delete();
|
message.delete();
|
||||||
const delay = message.convertTime(uSlowmode.time, "to", true);
|
|
||||||
|
|
||||||
return message.author.send(message.translate("administration/slowmode:PLEASE_WAIT", {
|
return message.author.send(message.translate("administration/slowmode:PLEASE_WAIT", {
|
||||||
time: delay,
|
time: message.convertTime(uSlowmode.time, "to", true),
|
||||||
channel: message.channel.toString()
|
channel: message.channel.toString()
|
||||||
}));
|
}));
|
||||||
} else {
|
} else {
|
||||||
|
@ -137,20 +135,14 @@ module.exports = class {
|
||||||
if (!cmd.conf.botPermissions.includes("EMBED_LINKS")) cmd.conf.botPermissions.push("EMBED_LINKS");
|
if (!cmd.conf.botPermissions.includes("EMBED_LINKS")) cmd.conf.botPermissions.push("EMBED_LINKS");
|
||||||
|
|
||||||
cmd.conf.botPermissions.forEach((perm) => {
|
cmd.conf.botPermissions.forEach((perm) => {
|
||||||
if (!message.channel.permissionsFor(message.guild.me).has(perm)) {
|
if (!message.channel.permissionsFor(message.guild.me).has(perm)) neededPermissions.push(perm);
|
||||||
neededPermissions.push(perm);
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (neededPermissions.length > 0) return message.error("misc:MISSING_BOT_PERMS", {
|
if (neededPermissions.length > 0) return message.error("misc:MISSING_BOT_PERMS", { list: neededPermissions.map((p) => `\`${p}\``).join(", ") });
|
||||||
list: neededPermissions.map((p) => `\`${p}\``).join(", ")
|
|
||||||
});
|
|
||||||
|
|
||||||
neededPermissions = [];
|
neededPermissions = [];
|
||||||
cmd.conf.memberPermissions.forEach((perm) => {
|
cmd.conf.memberPermissions.forEach((perm) => {
|
||||||
if (!message.channel.permissionsFor(message.member).has(perm)) {
|
if (!message.channel.permissionsFor(message.member).has(perm)) neededPermissions.push(perm);
|
||||||
neededPermissions.push(perm);
|
|
||||||
};
|
|
||||||
});
|
});
|
||||||
|
|
||||||
if (neededPermissions.length > 0) return message.error("misc:MISSING_MEMBER_PERMS", { list: neededPermissions.map((p) => `\`${p}\``).join(", ") });
|
if (neededPermissions.length > 0) return message.error("misc:MISSING_MEMBER_PERMS", { list: neededPermissions.map((p) => `\`${p}\``).join(", ") });
|
||||||
|
|
|
@ -11,7 +11,7 @@
|
||||||
"FORM_SUCCESS": "**Готово!**\n\n:arrow_right_hook: *Используйте `{{prefix}}goodbye test` для предпросмотра вашего сообщения!*",
|
"FORM_SUCCESS": "**Готово!**\n\n:arrow_right_hook: *Используйте `{{prefix}}goodbye test` для предпросмотра вашего сообщения!*",
|
||||||
"MAX_CHARACT": "Ваше сообщение не должно быть больше 1800 символов!",
|
"MAX_CHARACT": "Ваше сообщение не должно быть больше 1800 символов!",
|
||||||
"DISABLED": "**Сообщения отключены!**\n\n:arrow_right_hook: *Используйте `{{prefix}}configuration`, чтобы увидеть обновлённые настройки!*",
|
"DISABLED": "**Сообщения отключены!**\n\n:arrow_right_hook: *Используйте `{{prefix}}configuration`, чтобы увидеть обновлённые настройки!*",
|
||||||
"IMG_GOODBYE": "Вышел с сервера {{server}}!",
|
"IMG_GOODBYE": "Вышел с {{server}}!",
|
||||||
"IMG_NB": "{{memberCount}} участников!",
|
"IMG_NB": "{{memberCount}} участников!",
|
||||||
"TITLE": "Прощание"
|
"TITLE": "До встречи!"
|
||||||
}
|
}
|
|
@ -11,7 +11,7 @@
|
||||||
"FORM_SUCCESS": "**Готово!**\n\n:arrow_right_hook: *Используйте `{{prefix}}welcome test` для предпросмотра вашего приветственного сообщения!*",
|
"FORM_SUCCESS": "**Готово!**\n\n:arrow_right_hook: *Используйте `{{prefix}}welcome test` для предпросмотра вашего приветственного сообщения!*",
|
||||||
"MAX_CHARACT": "Ваше сообщение не должно быть больше 1800 символов!",
|
"MAX_CHARACT": "Ваше сообщение не должно быть больше 1800 символов!",
|
||||||
"DISABLED": "**Сообщения отключены!**\n\n:arrow_right_hook: *Используйте `{{prefix}}configuration`, чтобы увидеть обновлённые настройки!*",
|
"DISABLED": "**Сообщения отключены!**\n\n:arrow_right_hook: *Используйте `{{prefix}}configuration`, чтобы увидеть обновлённые настройки!*",
|
||||||
"IMG_WELCOME": "Добро пожаловать на сервер {{server}}!",
|
"IMG_WELCOME": "Добро пожаловать на {{server}}!",
|
||||||
"IMG_NB": "{{memberCount}}й участник!",
|
"IMG_NB": "{{memberCount}}й участник!",
|
||||||
"TITLE": "Приветствие"
|
"TITLE": "Добро пожаловать!"
|
||||||
}
|
}
|
|
@ -1,6 +1,6 @@
|
||||||
{
|
{
|
||||||
"name": "jaba",
|
"name": "jaba",
|
||||||
"version": "3.2.5",
|
"version": "3.2.6",
|
||||||
"description": "A very complete Discord bot (more than 100 commands) that uses the Discord.js",
|
"description": "A very complete Discord bot (more than 100 commands) that uses the Discord.js",
|
||||||
"main": "index.js",
|
"main": "index.js",
|
||||||
"private": true,
|
"private": true,
|
||||||
|
@ -31,12 +31,11 @@
|
||||||
"cron": "^1.7.2",
|
"cron": "^1.7.2",
|
||||||
"dblapi.js": "^2.3.0",
|
"dblapi.js": "^2.3.0",
|
||||||
"discord-backup": "^3.0.1",
|
"discord-backup": "^3.0.1",
|
||||||
"discord-canvas": "^1.3.2",
|
|
||||||
"discord-giveaways": "github:Androz2091/discord-giveaways#develop",
|
"discord-giveaways": "github:Androz2091/discord-giveaways#develop",
|
||||||
"discord-paginationembed": "github:gazmull/discord-paginationembed#v3",
|
"discord-paginationembed": "github:gazmull/discord-paginationembed#v3",
|
||||||
"discord-together": "^1.3.25",
|
"discord-together": "^1.3.25",
|
||||||
"discord.js": "^13.5.0",
|
"discord.js": "^13.5.1",
|
||||||
"distube": "^3.0.5",
|
"distube": "^3.0.7",
|
||||||
"ejs": "^3.1.3",
|
"ejs": "^3.1.3",
|
||||||
"express": "^4.17.1",
|
"express": "^4.17.1",
|
||||||
"express-session": "^1.17.0",
|
"express-session": "^1.17.0",
|
||||||
|
|
Loading…
Reference in a new issue