From e69896481c3d593a1b5fe9d10cdbab0b72eb3942 Mon Sep 17 00:00:00 2001 From: Djkato Date: Wed, 8 Feb 2023 17:38:31 +0100 Subject: [PATCH] webhook --- git_webhook.js | 20 +++++ main.js | 209 +++++++++++++++++++++++++------------------------ package.json | 3 +- 3 files changed, 127 insertions(+), 105 deletions(-) create mode 100644 git_webhook.js diff --git a/git_webhook.js b/git_webhook.js new file mode 100644 index 0000000..df0344a --- /dev/null +++ b/git_webhook.js @@ -0,0 +1,20 @@ +const secret = `${process.env.GITHUB_WEBHOOK}` +const repo = "/home/moover/MOOver" + +const http = require('http') +const crypto = require('crypto') +const exec = require('child_process').exec + +http.createServer(function (req, res) { + req.on('data', function (chunk) { + let sig = "sha1=" + crypto.createHmac('sha1', secret).update(chunk.toString()).digest('hex') + + if (req.headers['x-hub-signature'] == sig) { + exec('cd ' + repo + ' && git pull' + '&& npm install' + 'pm2 restart 0') + } + }) + + res.end() +}).listen(5050) + +console.log("running webhook!") \ No newline at end of file diff --git a/main.js b/main.js index f2914ca..25aece9 100755 --- a/main.js +++ b/main.js @@ -3,19 +3,19 @@ https://discord.com/developers/docs/topics/gateway#privileged-intents */ -var http = require('http'); +var http = require('http') http.createServer(function (req, res) { - res.writeHead(200, {'Content-Type': 'text/plain'}); - res.end('Hello World\n'); -}).listen(1000, "127.0.0.1"); + res.writeHead(200, { 'Content-Type': 'text/plain' }) + res.end('Hello World\n') +}).listen(5000, "127.0.0.1") -const Discord = require('discord.js'); +const Discord = require('discord.js') const { Client, Collection, Intents, MessageAttachment, -} = require('discord.js'); +} = require('discord.js') const client = new Client({ intents: [ Intents.FLAGS.GUILDS, @@ -23,97 +23,97 @@ const client = new Client({ Intents.FLAGS.GUILD_MESSAGE_REACTIONS, Intents.FLAGS.GUILD_MEMBERS, ], -}); +}) -const fs = require('fs'); -client.commands = new Collection(); +const fs = require('fs') +client.commands = new Collection() const commandFiles = fs.readdirSync('./commands') - .filter(file => !file.includes('WIP')); + .filter(file => !file.includes('WIP')) for (const file of commandFiles) { - const command = require(`./commands/${file}`); + const command = require(`./commands/${file}`) // Set a new item in the Collection // With the key as the command name and the value as the exported module - client.commands.set(command.data.name, command); + client.commands.set(command.data.name, command) } -const cron = require('node-cron'); -const mongoose = require('mongoose'); +const cron = require('node-cron') +const mongoose = require('mongoose') mongoose .connect(process.env.DBSRV, { useNewUrlParser: true, useUnifiedTopology: true, }).then(() => { - console.log('Connected to database'); + console.log('Connected to database') }).catch((err) => { - console.log(err); - }); + console.log(err) + }) -require('dotenv').config(); -const help = require('./helpFunctions.js'); -const resp = require('./responses.js'); -const bModel = require('./database/birthdaySchema'); -const eModel = require('./database/eventSchema'); +require('dotenv').config() +const help = require('./helpFunctions.js') +const resp = require('./responses.js') +const bModel = require('./database/birthdaySchema') +const eModel = require('./database/eventSchema') const turnOnMsg = ['AAAAAAAAAAAAA', 'Just turned on!', 'Just woke up!', 'May have crashed... sowwyyy >.<', - 'Heyyyy!', 'I\'m baaaack', 'Whom\'st have summoned they ancient one?']; + 'Heyyyy!', 'I\'m baaaack', 'Whom\'st have summoned they ancient one?'] client.once('ready', async () => { // if (client.user.username != 'MOOver Debug') { // client.channels.cache.get('780439236867653635').send(turnOnMsg[help.RNG(turnOnMsg.length)]); // } - cron.schedule('0 13 * * *', async function() { - pingEvent(); - }); - console.log('Running!'); -}); + cron.schedule('0 13 * * *', async function () { + pingEvent() + }) + console.log('Running!') +}) -client.on('messageCreate', gotMessage); +client.on('messageCreate', gotMessage) client.on('interactionCreate', async interaction => { - if (!interaction.isCommand()) return; + if (!interaction.isCommand()) return - const command = client.commands.get(interaction.commandName); + const command = client.commands.get(interaction.commandName) - if (!command) return; + if (!command) return try { - await command.execute(interaction); + await command.execute(interaction) } catch (error) { - console.error(error); + console.error(error) await interaction.reply({ content: 'There was an error while executing this command!', ephemeral: true, - }); + }) } -}); +}) function gotMessage(message) { if (message.content.includes('https://media.discordapp.net') && - (message.content.includes('webm') || - message.content.includes('mov') || - message.content.includes('mp4') || - message.embeds[0]?.type == 'video')) { - const linkArr = message.content.split('https://media.discordapp.net'); - message.channel.send('https://cdn.discordapp.com' + linkArr[1]); + (message.content.includes('webm') || + message.content.includes('mov') || + message.content.includes('mp4') || + message.embeds[0]?.type == 'video')) { + const linkArr = message.content.split('https://media.discordapp.net') + message.channel.send('https://cdn.discordapp.com' + linkArr[1]) } if (process.env.DEBUG == "ON") { - const debugger_ = require('./.debug.js'); - debugger_.debug(message); + const debugger_ = require('./.debug.js') + debugger_.debug(message) } - const chance = help.RNG(50000); + const chance = help.RNG(50000) if (chance == 420) { - resp.whoAsked(message); + resp.whoAsked(message) } - const msg = message.content.toLowerCase(); + const msg = message.content.toLowerCase() - const content = message.content.trim(); + const content = message.content.trim() - const msgContentSplit = content.split(/[ ]+/); + const msgContentSplit = content.split(/[ ]+/) /** * reference can't be null => must be a reply to message @@ -123,53 +123,53 @@ function gotMessage(message) { if (message.reference != null && msgContentSplit.length == 1 && message.mentions.channels.first() != undefined) { - moveMessage(message, msgContentSplit[0]); + moveMessage(message, msgContentSplit[0]) } - const isBot = message.author.bot; + const isBot = message.author.bot if (!isBot) { if (msg.includes('henlo')) { - resp.henlo(message); + resp.henlo(message) } else if (msg.includes('how ye')) { - resp.mood(message); + resp.mood(message) } else if (msg.includes('tylko jedno')) { - message.reply('Koksu pięć gram odlecieć sam'); + message.reply('Koksu pięć gram odlecieć sam') } } } function moveMessage(message, channelId) { - message.react('🐮'); + message.react('🐮') - const originalChannel = message.channel; - const msgToMooveId = message.reference.messageId; - const mentionedChannelId = channelId.substring(2, channelId.length - 1); + const originalChannel = message.channel + const msgToMooveId = message.reference.messageId + const mentionedChannelId = channelId.substring(2, channelId.length - 1) originalChannel.messages.fetch(msgToMooveId).then(msg => { if (msg.embeds.length > 0 && msg.content == '' && msg.attachments.size == 0) { - client.channels.cache.get(mentionedChannelId).send({embeds: msg.embeds }); + client.channels.cache.get(mentionedChannelId).send({ embeds: msg.embeds }) } else if (msg.attachments.size > 0) { - let attachmentsURL = ""; - const originalMsgAttachments = msg.attachments.values(); + let attachmentsURL = "" + const originalMsgAttachments = msg.attachments.values() for (let i = 0; i < msg.attachments.size; i++) { - const currAttachment = originalMsgAttachments.next().value; - attachmentsURL += `${currAttachment.url}\n`; + const currAttachment = originalMsgAttachments.next().value + attachmentsURL += `${currAttachment.url}\n` } - let messStr = ""; + let messStr = "" if (msg.content != '') { - messStr = "\nMessage:\n"; + messStr = "\nMessage:\n" } - newContent = `Sent by ${msg.author}\nmooved ${message.author}\n${messStr}${msg.content}\nAttachments:\n${attachmentsURL}`; - - client.channels.cache.get(mentionedChannelId).send({content: newContent}); + newContent = `Sent by ${msg.author}\nmooved ${message.author}\n${messStr}${msg.content}\nAttachments:\n${attachmentsURL}` + + client.channels.cache.get(mentionedChannelId).send({ content: newContent }) if (msg.embeds.length > 0) { client.channels.cache.get(mentionedChannelId) .send({ embeds: msg.embeds }) @@ -179,77 +179,78 @@ function moveMessage(message, channelId) { // ? Empty, Has embeds if (msg.content == '') { client.channels.cache.get(mentionedChannelId).send({ - content: `Sent by ${msg.author}\nmooved ${message.author}\nMessage:\n${msg.content}`}); - } + content: `Sent by ${msg.author}\nmooved ${message.author}\nMessage:\n${msg.content}` + }) + } // ? Has content, No embeds else { const embed = new Discord.MessageEmbed() .setColor(help.randomColor()) .addField('MOO', `Sent by ${msg.author}\nmooved ${message.author}`) - .addField('Message', msg.content); - client.channels.cache.get(mentionedChannelId).send({ embeds: [embed] }); + .addField('Message', msg.content) + client.channels.cache.get(mentionedChannelId).send({ embeds: [embed] }) } } - setTimeout(() => msg.delete(), 3000); - }); - setTimeout(() => message.delete(), 3000); + setTimeout(() => msg.delete(), 3000) + }) + setTimeout(() => message.delete(), 3000) } async function pingEvent() { - const currentDay = new Date().getDate(); - const currentMonth = new Date().getMonth() + 1; + const currentDay = new Date().getDate() + const currentMonth = new Date().getMonth() + 1 - let query = bModel.find({ day: currentDay, month: currentMonth }); - const birthdayList = await query.exec(); + let query = bModel.find({ day: currentDay, month: currentMonth }) + const birthdayList = await query.exec() - query = eModel.find({ guild: 'global', day: currentDay, month: currentMonth }); - const globalEventList = await query.exec(); - const guildIds = []; - const sysChannelIds = []; + query = eModel.find({ guild: 'global', day: currentDay, month: currentMonth }) + const globalEventList = await query.exec() + const guildIds = [] + const sysChannelIds = [] client.guilds.cache.forEach(element => { - sysChannelIds.push(element.channels.guild.systemChannelId); - guildIds.push(element.id); - }); + sysChannelIds.push(element.channels.guild.systemChannelId) + guildIds.push(element.id) + }) // TODO deduplicate - const todayBirthdays = []; + const todayBirthdays = [] if (todayBirthdays != []) { for (let i = 0; i < guildIds.length; i++) { - const guildId = guildIds[i]; - const sysChannelId = sysChannelIds[i]; - const guild = client.guilds.cache.find((g) => g.id == guildId); + const guildId = guildIds[i] + const sysChannelId = sysChannelIds[i] + const guild = client.guilds.cache.find((g) => g.id == guildId) for (let j = 0; j < birthdayList.length; j++) { - const userId = birthdayList[j].id; + const userId = birthdayList[j].id if ((await guild.members.fetch()).find(user => user.id == userId) != undefined) { - const gifAmount = 12; - const embed = await help.getGifEmbed(`https://g.tenor.com/v1/search?q=anime-hug&key=${process.env.TENOR}&limit=${gifAmount}`, gifAmount); - embed.setDescription(`Happy Birthday <@${userId}> !!!`); + const gifAmount = 12 + const embed = await help.getGifEmbed(`https://g.tenor.com/v1/search?q=anime-hug&key=${process.env.TENOR}&limit=${gifAmount}`, gifAmount) + embed.setDescription(`Happy Birthday <@${userId}> !!!`) client.channels.cache.get(sysChannelId) - .send({ embeds: [embed] }); + .send({ embeds: [embed] }) } } } } for (let i = 0; i < guildIds.length; i++) { - const guildId = guildIds[i]; - const sysChannelId = sysChannelIds[i]; - query = eModel.find({ guild: guildId, day: currentDay, month: currentMonth }); - const guildEvents = await query.exec(); + const guildId = guildIds[i] + const sysChannelId = sysChannelIds[i] + query = eModel.find({ guild: guildId, day: currentDay, month: currentMonth }) + const guildEvents = await query.exec() for (let j = 0; j < globalEventList.length; j++) { - let specialMessage = ''; + let specialMessage = '' if (globalEventList[j].name == 'Valentine\'s Day') { - specialMessage = '\n Don\'t forget I love you all with all my hart 🥺'; + specialMessage = '\n Don\'t forget I love you all with all my hart 🥺' } client.channels.cache.get(sysChannelId) - .send(`It's **${globalEventList[j].name}** today!` + specialMessage); + .send(`It's **${globalEventList[j].name}** today!` + specialMessage) } for (let j = 0; j < guildEvents.length; j++) { client.channels.cache.get(sysChannelId) - .send(`It's **${guildEvents[j].name}** today!`); + .send(`It's **${guildEvents[j].name}** today!`) } } } -client.login(process.env.TOKEN); +client.login(process.env.TOKEN) diff --git a/package.json b/package.json index 51a0356..5911509 100644 --- a/package.json +++ b/package.json @@ -4,7 +4,8 @@ "description": "", "main": "main.js", "scripts": { - "start": "node main.js" + "webhook": "node git_webhook.js", + "moover": "node main.js" }, "engines": { "node": "16.x"