feat: Send event details in markdown

imgbot
KieranRobson 2022-09-30 18:02:30 +01:00
parent 06d15fcb03
commit 595806866a
3 changed files with 118 additions and 101 deletions

143
package-lock.json generated
View File

@ -13,12 +13,12 @@
"discord-api-types": "^0.37.10",
"discord.js": "^13.10.2",
"dotenv": "^16.0.2",
"glob": "^7.2.3"
"glob": "^7.2.3",
"json-to-frontmatter-markdown": "^1.0.0"
},
"devDependencies": {
"cspell": "^6.10.1",
"eslint": "^8.23.1",
"eslint-config-airbnb-base": "^15.0.0",
"eslint-config-prettier": "^8.5.0",
"eslint-plugin-import": "^2.25.3",
"eslint-plugin-prettier": "^4.2.1",
@ -957,12 +957,6 @@
"node": ">=8"
}
},
"node_modules/confusing-browser-globals": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
"integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
"dev": true
},
"node_modules/core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
@ -1474,34 +1468,6 @@
"url": "https://opencollective.com/eslint"
}
},
"node_modules/eslint-config-airbnb-base": {
"version": "15.0.0",
"resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz",
"integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==",
"dev": true,
"dependencies": {
"confusing-browser-globals": "^1.0.10",
"object.assign": "^4.1.2",
"object.entries": "^1.1.5",
"semver": "^6.3.0"
},
"engines": {
"node": "^10.12.0 || >=12.0.0"
},
"peerDependencies": {
"eslint": "^7.32.0 || ^8.2.0",
"eslint-plugin-import": "^2.25.2"
}
},
"node_modules/eslint-config-airbnb-base/node_modules/semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true,
"bin": {
"semver": "bin/semver.js"
}
},
"node_modules/eslint-config-prettier": {
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
@ -2495,6 +2461,15 @@
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
"node_modules/json-to-frontmatter-markdown": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-to-frontmatter-markdown/-/json-to-frontmatter-markdown-1.0.0.tgz",
"integrity": "sha512-ta2DuiOuXER5MH8mWlWot+w2KM629GMQ+pH4PEgozNWgqv7l2ZrT1quFmcS6z7h2ArS4k02XaB4IW5pU+qivqg==",
"dependencies": {
"left-pad": "^1.3.0",
"mkdirp": "^0.5.1"
}
},
"node_modules/json5": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
@ -2519,6 +2494,12 @@
"graceful-fs": "^4.1.6"
}
},
"node_modules/left-pad": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
"integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA==",
"deprecated": "use String.prototype.padStart()"
},
"node_modules/levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@ -2655,8 +2636,18 @@
"node_modules/minimist": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
"dev": true
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
},
"node_modules/mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"dependencies": {
"minimist": "^1.2.6"
},
"bin": {
"mkdirp": "bin/cmd.js"
}
},
"node_modules/ms": {
"version": "2.1.2",
@ -2725,20 +2716,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
"node_modules/object.entries": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
"integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
"dev": true,
"dependencies": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.19.1"
},
"engines": {
"node": ">= 0.4"
}
},
"node_modules/object.values": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",
@ -4275,12 +4252,6 @@
"xdg-basedir": "^4.0.0"
}
},
"confusing-browser-globals": {
"version": "1.0.11",
"resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz",
"integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==",
"dev": true
},
"core-util-is": {
"version": "1.0.3",
"resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz",
@ -4682,26 +4653,6 @@
"text-table": "^0.2.0"
}
},
"eslint-config-airbnb-base": {
"version": "15.0.0",
"resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz",
"integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==",
"dev": true,
"requires": {
"confusing-browser-globals": "^1.0.10",
"object.assign": "^4.1.2",
"object.entries": "^1.1.5",
"semver": "^6.3.0"
},
"dependencies": {
"semver": {
"version": "6.3.0",
"resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz",
"integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==",
"dev": true
}
}
},
"eslint-config-prettier": {
"version": "8.5.0",
"resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.5.0.tgz",
@ -5433,6 +5384,15 @@
"integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==",
"dev": true
},
"json-to-frontmatter-markdown": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/json-to-frontmatter-markdown/-/json-to-frontmatter-markdown-1.0.0.tgz",
"integrity": "sha512-ta2DuiOuXER5MH8mWlWot+w2KM629GMQ+pH4PEgozNWgqv7l2ZrT1quFmcS6z7h2ArS4k02XaB4IW5pU+qivqg==",
"requires": {
"left-pad": "^1.3.0",
"mkdirp": "^0.5.1"
}
},
"json5": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/json5/-/json5-1.0.1.tgz",
@ -5452,6 +5412,11 @@
"universalify": "^2.0.0"
}
},
"left-pad": {
"version": "1.3.0",
"resolved": "https://registry.npmjs.org/left-pad/-/left-pad-1.3.0.tgz",
"integrity": "sha512-XI5MPzVNApjAyhQzphX8BkmKsKUxD4LdyK24iZeQGinBN9yTQT3bFlCBy/aVx2HrNcqQGsdot8ghrjyrvMCoEA=="
},
"levn": {
"version": "0.4.1",
"resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz",
@ -5554,8 +5519,15 @@
"minimist": {
"version": "1.2.6",
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz",
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==",
"dev": true
"integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q=="
},
"mkdirp": {
"version": "0.5.6",
"resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz",
"integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==",
"requires": {
"minimist": "^1.2.6"
}
},
"ms": {
"version": "2.1.2",
@ -5601,17 +5573,6 @@
"object-keys": "^1.1.1"
}
},
"object.entries": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.5.tgz",
"integrity": "sha512-TyxmjUoZggd4OrrU1W66FMDG6CuqJxsFvymeyXI51+vQLN67zYfZseptRge703kKQdo4uccgAKebXFcRCzk4+g==",
"dev": true,
"requires": {
"call-bind": "^1.0.2",
"define-properties": "^1.1.3",
"es-abstract": "^1.19.1"
}
},
"object.values": {
"version": "1.1.5",
"resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.5.tgz",

View File

@ -9,7 +9,6 @@
"spell": "cspell /**/",
"spell-code": "cspell src/**/",
"ci": "eslint . --fix && cspell /**/"
},
"keywords": [],
"author": "",
@ -19,7 +18,8 @@
"discord-api-types": "^0.37.10",
"discord.js": "^13.10.2",
"dotenv": "^16.0.2",
"glob": "^7.2.3"
"glob": "^7.2.3",
"json-to-frontmatter-markdown": "^1.0.0"
},
"devDependencies": {
"cspell": "^6.10.1",

View File

@ -1,28 +1,38 @@
const { MessageEmbed } = require('discord.js');
const client = require('../index');
const transformAndWriteToFile = require('json-to-frontmatter-markdown').default;
const wait = require('node:timers/promises').setTimeout;
client.on('guildScheduledEventCreate', async (guildScheduledEvent) => {
const channel = client.channels.cache.get('973686987787751534');
const eventsChannel = client.channels.cache.get('973686987787751534');
const markdownChannel = client.channels.cache.get('1025318437028896778');
console.log(guildScheduledEvent);
let location = '';
let endTime = 'No Scheduled End Time';
const embed = new MessageEmbed()
.setTitle(guildScheduledEvent.name)
.setDescription(guildScheduledEvent.description)
.setColor('GREEN');
embed.setTimestamp();
embed.setImage(
`https://cdn.discordapp.com/guild-events/${guildScheduledEvent.id}/${guildScheduledEvent.image}.png?size=2048`
);
.setColor('GREEN')
.setTimestamp()
.setImage(
`https://cdn.discordapp.com/guild-events/${guildScheduledEvent.id}/${guildScheduledEvent.image}.png?size=2048`
);
if (guildScheduledEvent.entityType !== 'EXTERNAL') {
embed.addField(
'Location',
`${guildScheduledEvent.channel.name} - [Link](https://discordapp.com/channels/427865794467069962/${guildScheduledEvent.channelId})`
);
location = `${guildScheduledEvent.channel.name} - [Link](https://discordapp.com/channels/427865794467069962/${guildScheduledEvent.channelId})`;
} else {
embed.addField(
'Location',
`External - ${guildScheduledEvent.entityMetadata.location}`
);
location = `External - ${guildScheduledEvent.entityMetadata.location}`;
}
embed.addField(
@ -41,9 +51,55 @@ client.on('guildScheduledEventCreate', async (guildScheduledEvent) => {
})}`,
true
);
endTime = guildScheduledEvent.scheduledEndAt.toLocaleString('en-UK', {
timeZone: 'Europe/London',
});
}
embed.addField('InviteURL', `${guildScheduledEvent.url}`);
eventsChannel.send({ embeds: [embed] });
channel.send({ embeds: [embed] });
transformAndWriteToFile({
frontmatterMarkdown: {
frontmatter: [
{ layout: 'base.html' },
{ tags: 'event' },
{ title: guildScheduledEvent.name },
{
date: guildScheduledEvent.scheduledStartAt.toISOString().substring(0,10)
},
{ teaser: guildScheduledEvent.description },
],
body: `
# ${guildScheduledEvent.name}
${guildScheduledEvent.description}
## Date and Times
- Start Date and Time: ${guildScheduledEvent.scheduledStartAt.toLocaleString(
'en-UK',
{ timeZone: 'Europe/London' }
)}
- End Date and Time: ${endTime}
## Location:
${location}
## Invite
${guildScheduledEvent.url}
`,
},
path: `src/markdownOutput`,
fileName: `${guildScheduledEvent.name}.md`,
});
await wait(5000);
markdownChannel.send({
files: [`src/markdownOutput/${guildScheduledEvent.name}.md`],
});
});