diff --git a/src/commands/fun/sudo.js b/src/commands/fun/sudo.js index 3d771ab..b5cda6f 100644 --- a/src/commands/fun/sudo.js +++ b/src/commands/fun/sudo.js @@ -7,7 +7,8 @@ module.exports = async (client, interaction, args) => { if (text.length >= 2000) return client.errNormal({ error: "You may not use more than 2000 characters!", type: 'editreply' }, interaction); - interaction.channel.createWebhook(user.username, { + interaction.channel.createWebhook({ + name: user.username, avatar: user.displayAvatarURL(), }).then(async (_webhook) => { await _webhook.send(client.removeMentions(text)); diff --git a/src/commands/images/clyde.js b/src/commands/images/clyde.js index f5b8c89..efc8d98 100644 --- a/src/commands/images/clyde.js +++ b/src/commands/images/clyde.js @@ -1,12 +1,14 @@ +const { Canvas } = require("canvacord"); +const Discord = require("discord.js"); module.exports = async (client, interaction, args) => { const clydeMessage = interaction.options.getString('text'); - client.embed({ - title: `🖼・Clyde`, - image: `https://ctk-api.herokuapp.com/clyde/${encodeURIComponent(clydeMessage)}`, - type: 'editreply' - }, interaction) + const image = await Canvas.clyde(clydeMessage) + + const attachment = new Discord.AttachmentBuilder(image, "clyde.png"); + + interaction.editReply({ files: [attachment] }); } \ No newline at end of file diff --git a/src/commands/images/colorify.js b/src/commands/images/colorify.js index 102b366..403f678 100644 --- a/src/commands/images/colorify.js +++ b/src/commands/images/colorify.js @@ -1,5 +1,5 @@ const Discord = require('discord.js'); -const pop = require("popcat-wrapper"); +const { Canvas } = require("canvacord"); module.exports = async (client, interaction, args) => { @@ -7,7 +7,7 @@ module.exports = async (client, interaction, args) => { const userAvatar = member.displayAvatarURL({ dynamic: false, size: 1024, format: 'png' }); - const image = await pop.colorify(userAvatar); + const image = await Canvas.colorfy(userAvatar, "#ff0000") let attach = new Discord.AttachmentBuilder(image, { name: "colorify.png" }); interaction.editReply({ files: [attach] }) diff --git a/src/commands/images/greyscale.js b/src/commands/images/greyscale.js index ea9a8d6..a7c142a 100644 --- a/src/commands/images/greyscale.js +++ b/src/commands/images/greyscale.js @@ -1,15 +1,15 @@ const Discord = require('discord.js'); -const pop = require("popcat-wrapper"); - +const { Canvas } = require("canvacord"); module.exports = async (client, interaction, args) => { const member = interaction.options.getUser('user'); const userAvatar = member.displayAvatarURL({ dynamic: false, size: 1024, format: 'png' }); - const image = await pop.greyscale(userAvatar); + const image = await Canvas.greyscale(userAvatar) let attach = new Discord.AttachmentBuilder(image, { name: "greyscale.png" }); + interaction.editReply({ files: [attach] }) } diff --git a/src/commands/images/podium.js b/src/commands/images/podium.js index 19ba740..71314f3 100644 --- a/src/commands/images/podium.js +++ b/src/commands/images/podium.js @@ -6,13 +6,12 @@ module.exports = async (client, interaction, args) => { const user2 = interaction.options.getUser('user2') || interaction.user; const user3 = interaction.options.getUser('user3') || interaction.user; - var user1Avatar = user1.displayAvatarURL({ dynamic: false, size: 1024, format: 'png' }); - var user2Avatar = user2.displayAvatarURL({ dynamic: false, size: 1024, format: 'png' }); - var user3Avatar = user3.displayAvatarURL({ dynamic: false, size: 1024, format: 'png' }); + var user1Avatar = user1.displayAvatarURL({ dynamic: false, size: 1024, extension: 'png' }); + var user2Avatar = user2.displayAvatarURL({ dynamic: false, size: 1024, extension: 'png' }); + var user3Avatar = user3.displayAvatarURL({ dynamic: false, size: 1024, extension: 'png' }); var img = await new DIG.Podium().getImage(user1Avatar, user2Avatar, user3Avatar, user1.tag, user2.tag, user3.tag); var attach = new Discord.AttachmentBuilder(img, { name: "podium.png" }); - interaction.editReply({ files: [attach] }) } diff --git a/src/index.js b/src/index.js index 91a8ba3..4088a37 100644 --- a/src/index.js +++ b/src/index.js @@ -140,3 +140,58 @@ manager.on('shardCreate', shard => { manager.spawn(); + +// Webhooks +const consoleLogs = new Discord.WebhookClient({ + id: webhook.consoleLogs.id, + token: webhook.consoleLogs.token, +}); + +const warnLogs = new Discord.WebhookClient({ + id: webhook.warnLogs.id, + token: webhook.warnLogs.token, +}); + +process.on('unhandledRejection', error => { + console.error('Unhandled promise rejection:', error); + if (error) if (error.length > 950) error = error.slice(0, 950) + '... view console for details'; + if (error.stack) if (error.stack.length > 950) error.stack = error.stack.slice(0, 950) + '... view console for details'; + if (!error.stack) return + const embed = new Discord.EmbedBuilder() + .setTitle(`🚨・Unhandled promise rejection`) + .addFields([ + { + name: "Error", + value: error ? Discord.codeBlock(error) : "No error", + }, + { + name: "Stack error", + value: error.stack ? Discord.codeBlock(error.stack) : "No stack error", + } + ]) + .setColor(client.config.colors.normal) + consoleLogs.send({ + username: 'Bot Logs', + embeds: [embed], + }).catch(() => { + console.log(error) + }) +}); + +process.on('warning', warn => { + const embed = new Discord.EmbedBuilder() + .setTitle(`🚨・New warning found`) + .addFields([ + { + name: `Warn`, + value: `\`\`\`${warn}\`\`\``, + }, + ]) + .setColor(client.config.colors.normal) + warnLogs.send({ + username: 'Bot Logs', + embeds: [embed], + }).catch(() => { + + }) +}); \ No newline at end of file