From 95941b56f8cb1b1229e0f4f1e5f8f08c0500a4da Mon Sep 17 00:00:00 2001 From: Kacepr Ostrowski Date: Fri, 6 Jan 2023 14:58:32 +0100 Subject: [PATCH 1/2] added: sending errors to the channel --- README.md | 7 ------- index.js | 34 +++++++++++++++++++++++++++++++--- 2 files changed, 31 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index e3af940..3f224c6 100644 --- a/README.md +++ b/README.md @@ -62,13 +62,6 @@ You have to install: `nodejs` | `npm` | `sudo` | `nginx` | `certbot` | `python3- Tested on: `Debian GNU/Linux 9.13 ` -### Versions 🆕 - -`v1.0.0` ~ important commands ❗ - -`v1.1.0` ~ added: adding a user and disabling/enabling the server and message visibility - -`v1.1.1` ~ translated to english by [@Wain](https://github.com/Wain777) ### Do you need help? Go on this discord: diff --git a/index.js b/index.js index 8dddc4c..9ac04e4 100644 --- a/index.js +++ b/index.js @@ -14,6 +14,10 @@ const { GatewayIntentBits, ChannelType, ActivityType, + EmbedBuilder, + ActionRowBuilder, + ButtonBuilder, + ButtonStyle, } = require("discord.js"); require("dotenv").config(); const wait = require("node:timers/promises").setTimeout; @@ -343,12 +347,36 @@ client.on(Events.InteractionCreate, async (interaction) => { } } }); +function sendErrorMessage(e) { + let channel = client.channels.cache.get( + guild.channels.cache.find( + (c) => c.name.toLowerCase() === nconf.get("channelName") + ).id + ); + + const Embed = new EmbedBuilder() + .setColor(0xff0000) + .setTitle("!Error") + .setDescription(`${e}`) + .setThumbnail("https://i.imgur.com/w8hzuoa.png") + .setTimestamp() + .setFooter({ + text: "made by ~ kacpep.dev", + iconURL: "https://i.imgur.com/M0uWxCA.png", + }); + const btn = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setLabel("Report a bug") + .setEmoji("📨") + .setURL("https://github.com/kacpep/server-worker/issues/new/choose") + .setStyle(ButtonStyle.Link) + ); + channel.send({ embeds: [Embed], components: [btn] }); +} client.login(process.env.DISCORD_TOKEN); process.on("uncaughtException", (error) => { - console.log("-----handler-------"); console.log(error); - console.log("-----handler-------"); - process.exit(1); + sendErrorMessage(error); }); From 17d1d3eaa8ab131c3ccad0edaf2b81913560f8c7 Mon Sep 17 00:00:00 2001 From: Kacepr Ostrowski Date: Fri, 6 Jan 2023 17:58:41 +0100 Subject: [PATCH 2/2] bump to v1.1.3 added: axios; version notification --- index.js | 137 +++++++++++++++++++++++++++++++++-------- package-lock.json | 152 ++++++++++++++++++++++++++++++++++++++++++++++ package.json | 3 +- 3 files changed, 267 insertions(+), 25 deletions(-) diff --git a/index.js b/index.js index 9ac04e4..293a33a 100644 --- a/index.js +++ b/index.js @@ -22,6 +22,7 @@ const { require("dotenv").config(); const wait = require("node:timers/promises").setTimeout; const readline = require("node:readline"); +const axios = require("axios").default; async function countLines(input) { let lineCount = 0; @@ -47,12 +48,77 @@ for (const file of commandFiles) { client.commands.set(command.data.name, command); } +function versionCompare(myVersion, minimumVersion) { + if (myVersion == minimumVersion) return false; + + var v1 = myVersion.split("."), + v2 = minimumVersion.split("."), + minLength; + + minLength = Math.min(v1.length, v2.length); + + for (i = 0; i < minLength; i++) { + if (Number(v1[i]) > Number(v2[i])) { + return true; + } + if (Number(v1[i]) < Number(v2[i])) { + return false; + } + } + + return v1.length >= v2.length; +} + client.once(Events.ClientReady, async () => { console.log("Ready!"); + guild = client.guilds.cache.get(process.env.GUILD_ID); + let latestReleases = await axios.get( + "https://github.com/kacpep/server-worker/releases/latest", + { + headers: { + Accept: "application/json", + }, + } + ); + + if ( + versionCompare( + process.env.npm_package_version, + latestReleases.data.tag_name.slice(1) + ) + ) { + console.log( + "New version available! Update now! https://github.com/kacpep/server-worker" + ); + try { + let channel = client.channels.cache.get( + guild.channels.cache.find( + (c) => c.name.toLowerCase() === nconf.get("channelName") + ).id + ); + const Embed = new EmbedBuilder() + .setColor(0x00ff00) + .setTitle("!Update") + .setDescription(`New version available!`) + .setThumbnail("https://i.imgur.com/w8hzuoa.png") + .setTimestamp() + .setFooter({ + text: "made by ~ kacpep.dev", + iconURL: "https://i.imgur.com/M0uWxCA.png", + }); + const btn = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setLabel("Update now!") + .setEmoji("🆕") + .setURL("https://github.com/kacpep/server-worker") + .setStyle(ButtonStyle.Link) + ); + channel.send({ embeds: [Embed], components: [btn] }); + } catch {} + } client.user.setActivity("better side..", { type: ActivityType.Watching }); - guild = client.guilds.cache.get(process.env.GUILD_ID); if ( !guild.channels.cache.find( (channel) => @@ -87,6 +153,27 @@ client.once(Events.ClientReady, async () => { }); client.on(Events.InteractionCreate, async (interaction) => { + let latestReleases = await axios.get( + "https://github.com/kacpep/server-worker/releases/latest", + { + headers: { + Accept: "application/json", + }, + } + ); + if ( + versionCompare( + process.env.npm_package_version, + latestReleases.data.tag_name.slice(1) + ) + ) { + console.log( + "New version available! Update now! https://github.com/kacpep/server-worker" + ); + client.user.setActivity("New version available", { + type: ActivityType.Watching, + }); + } if (!interaction.isChatInputCommand()) return; nconf.file("default", configPath); let users = Object.assign([], nconf.get("users")); @@ -348,30 +435,32 @@ client.on(Events.InteractionCreate, async (interaction) => { } }); function sendErrorMessage(e) { - let channel = client.channels.cache.get( - guild.channels.cache.find( - (c) => c.name.toLowerCase() === nconf.get("channelName") - ).id - ); + try { + let channel = client.channels.cache.get( + guild.channels.cache.find( + (c) => c.name.toLowerCase() === nconf.get("channelName") + ).id + ); - const Embed = new EmbedBuilder() - .setColor(0xff0000) - .setTitle("!Error") - .setDescription(`${e}`) - .setThumbnail("https://i.imgur.com/w8hzuoa.png") - .setTimestamp() - .setFooter({ - text: "made by ~ kacpep.dev", - iconURL: "https://i.imgur.com/M0uWxCA.png", - }); - const btn = new ActionRowBuilder().addComponents( - new ButtonBuilder() - .setLabel("Report a bug") - .setEmoji("📨") - .setURL("https://github.com/kacpep/server-worker/issues/new/choose") - .setStyle(ButtonStyle.Link) - ); - channel.send({ embeds: [Embed], components: [btn] }); + const Embed = new EmbedBuilder() + .setColor(0xff0000) + .setTitle("!Error") + .setDescription(`${e}`) + .setThumbnail("https://i.imgur.com/w8hzuoa.png") + .setTimestamp() + .setFooter({ + text: "made by ~ kacpep.dev", + iconURL: "https://i.imgur.com/M0uWxCA.png", + }); + const btn = new ActionRowBuilder().addComponents( + new ButtonBuilder() + .setLabel("Report a bug") + .setEmoji("📨") + .setURL("https://github.com/kacpep/server-worker/issues/new/choose") + .setStyle(ButtonStyle.Link) + ); + channel.send({ embeds: [Embed], components: [btn] }); + } catch {} } client.login(process.env.DISCORD_TOKEN); diff --git a/package-lock.json b/package-lock.json index 691779e..21a4314 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.1.1", "license": "LICENSE", "dependencies": { + "axios": "^1.2.2", "discord.js": "^14.7.1", "dotenv": "^16.0.3", "nconf": "^0.12.0" @@ -140,6 +141,21 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "dependencies": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "node_modules/busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -177,6 +193,25 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/discord-api-types": { "version": "0.37.24", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.24.tgz", @@ -246,6 +281,38 @@ "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, + "node_modules/follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, "node_modules/get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -304,6 +371,25 @@ "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, "node_modules/nconf": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.0.tgz", @@ -330,6 +416,11 @@ "url": "https://github.com/sponsors/Borewit" } }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "node_modules/readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", @@ -652,6 +743,21 @@ "resolved": "https://registry.npmjs.org/async/-/async-3.2.4.tgz", "integrity": "sha512-iAB+JbDEGXhyIUavoDl9WP/Jj106Kz9DEn1DPgYw5ruDn0e3Wgi3sKFm55sASdGBNOQB8F59d9qQ7deqrHA8wQ==" }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "axios": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.2.2.tgz", + "integrity": "sha512-bz/J4gS2S3I7mpN/YZfGFTqhXTYzRho8Ay38w2otuuDR322KzFIWm/4W2K6gIwvWaws5n+mnb7D1lN9uD+QH6Q==", + "requires": { + "follow-redirects": "^1.15.0", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, "busboy": { "version": "1.6.0", "resolved": "https://registry.npmjs.org/busboy/-/busboy-1.6.0.tgz", @@ -683,6 +789,19 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, "discord-api-types": { "version": "0.37.24", "resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.24.tgz", @@ -737,6 +856,21 @@ "token-types": "^5.0.1" } }, + "follow-redirects": { + "version": "1.15.2", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.2.tgz", + "integrity": "sha512-VQLG33o04KaQ8uYi2tVNbdrWp1QWxNNea+nmIB4EVM28v0hmP17z7aG1+wAkNzVq4KeXTq3221ye5qTJP91JwA==" + }, + "form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + } + }, "get-caller-file": { "version": "2.0.5", "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", @@ -772,6 +906,19 @@ "resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz", "integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==" }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, "nconf": { "version": "0.12.0", "resolved": "https://registry.npmjs.org/nconf/-/nconf-0.12.0.tgz", @@ -788,6 +935,11 @@ "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==" }, + "proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, "readable-stream": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", diff --git a/package.json b/package.json index 4724f5e..e0fdc63 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "server-worker", - "version": "1.1.1", + "version": "1.1.3", "description": "", "main": "index.js", "scripts": { @@ -23,6 +23,7 @@ }, "homepage": "https://github.com/kacpep/server-worker#readme", "dependencies": { + "axios": "^1.2.2", "discord.js": "^14.7.1", "dotenv": "^16.0.3", "nconf": "^0.12.0"