Compare commits
No commits in common. "2138bac3bbe974b5b3ce346b83a4cffa37b3de24" and "b9ebbccb90955028e10a343dbaa83bc9d721171c" have entirely different histories.
2138bac3bb
...
b9ebbccb90
|
@ -1,22 +0,0 @@
|
||||||
{
|
|
||||||
"storm": [
|
|
||||||
"https://www.spc.noaa.gov/products/outlook/day1otlk.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/outlook/day2otlk.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/outlook/day3otlk.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/day4-8/day4prob.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/day4-8/day5prob.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/day4-8/day6prob.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/day4-8/day7prob.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/day4-8/day8prob.gif"
|
|
||||||
],
|
|
||||||
"fire": [
|
|
||||||
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day1otlk_fire.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day2otlk_fire.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day3otlk_fire.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day4otlk_fire.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day5otlk_fire.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day6otlk_fire.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day7otlk_fire.gif",
|
|
||||||
"https://www.spc.noaa.gov/products/exper/fire_wx/imgs/day8otlk_fire.gif"
|
|
||||||
]
|
|
||||||
}
|
|
109
index.js
109
index.js
|
@ -4,7 +4,6 @@ const config = require("./config.json");
|
||||||
const wfos = require("./data/wfos.json");
|
const wfos = require("./data/wfos.json");
|
||||||
const blacklist = require("./data/blacklist.json");
|
const blacklist = require("./data/blacklist.json");
|
||||||
const events = require("./data/events.json");
|
const events = require("./data/events.json");
|
||||||
const outlookURLs = require("./data/outlook.json");
|
|
||||||
const { client, xml } = require("@xmpp/client");
|
const { client, xml } = require("@xmpp/client");
|
||||||
const fetch = require("node-fetch");
|
const fetch = require("node-fetch");
|
||||||
const html = require("html-entities")
|
const html = require("html-entities")
|
||||||
|
@ -40,15 +39,6 @@ const db = new sqlite3.Database("channels.db", (err) => {
|
||||||
|
|
||||||
|
|
||||||
// Random funcs
|
// Random funcs
|
||||||
function toTitleCase(str) {
|
|
||||||
return str.replace(
|
|
||||||
/\w\S*/g,
|
|
||||||
function (txt) {
|
|
||||||
return txt.charAt(0).toUpperCase() + txt.substr(1).toLowerCase();
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
const parseProductID = function (product_id) {
|
const parseProductID = function (product_id) {
|
||||||
const [timestamp, station, wmo, pil] = product_id.split("-");
|
const [timestamp, station, wmo, pil] = product_id.split("-");
|
||||||
return {
|
return {
|
||||||
|
@ -356,7 +346,7 @@ xmpp.on("stanza", (stanza) => {
|
||||||
|
|
||||||
// Send discord msg
|
// Send discord msg
|
||||||
let embed = {
|
let embed = {
|
||||||
description: `<t:${product_id.timestamp / 1000}:T> <t:${product_id.timestamp / 1000}:R> ${bodyData.string}`,
|
description: `<t:${product_id.timestamp/1000}:T> <t:${product_id.timestamp/1000}:R> ${bodyData.string}`,
|
||||||
color: parseInt(config.priorityColors[evt.priority].replace("#", ""), 16) || 0x000000,
|
color: parseInt(config.priorityColors[evt.priority].replace("#", ""), 16) || 0x000000,
|
||||||
timestamp: product_id.timestamp,
|
timestamp: product_id.timestamp,
|
||||||
footer: {
|
footer: {
|
||||||
|
@ -701,69 +691,6 @@ discord.on('ready', async () => {
|
||||||
"name": "userlist",
|
"name": "userlist",
|
||||||
"description": "List all subscribed alerts for this user",
|
"description": "List all subscribed alerts for this user",
|
||||||
"type": 1
|
"type": 1
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "outlook",
|
|
||||||
"description": "Get day 1-8 storm or fire outlook from the SPC",
|
|
||||||
"type": 1,
|
|
||||||
"options": [
|
|
||||||
{
|
|
||||||
"name": "day",
|
|
||||||
"description": "Day of outlook",
|
|
||||||
"type": 4,
|
|
||||||
"required": true,
|
|
||||||
"choices": [
|
|
||||||
{
|
|
||||||
"name": "Day 1",
|
|
||||||
"value": 0
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Day 2",
|
|
||||||
"value": 1
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Day 3",
|
|
||||||
"value": 2
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Day 4",
|
|
||||||
"value": 3
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Day 5",
|
|
||||||
"value": 4
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Day 6",
|
|
||||||
"value": 5
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Day 7",
|
|
||||||
"value": 6
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Day 8",
|
|
||||||
"value": 7
|
|
||||||
}
|
|
||||||
]
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "type",
|
|
||||||
"description": "Type of outlook",
|
|
||||||
"type": 3,
|
|
||||||
"required": true,
|
|
||||||
"choices": [
|
|
||||||
{
|
|
||||||
"name": "Fire",
|
|
||||||
"value": "fire"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
"name": "Storm",
|
|
||||||
"value": "storm"
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
|
||||||
]
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
@ -1220,39 +1147,8 @@ discord.on("interactionCreate", async (interaction) => {
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
break;
|
break;
|
||||||
case "outlook":
|
|
||||||
day = interaction.options.getInteger("day");
|
|
||||||
type = interaction.options.getString("type");
|
|
||||||
if (day < 0 || day > 7) return interaction.reply({ content: "Invalid day", ephemeral: true });
|
|
||||||
if (type !== "fire" && type !== "storm") return interaction.reply({ content: "Invalid type", ephemeral: true });
|
|
||||||
url = outlookURLs[type][day];
|
|
||||||
await interaction.deferReply();
|
|
||||||
fetch(url).then((res) => {
|
|
||||||
if (res.status !== 200) {
|
|
||||||
interaction.editReply({ content: "Failed to get outlook", ephemeral: true });
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
// Returns image, send embed with image as attachment (we need to bypass discord cache)
|
|
||||||
res.buffer().then(async (buffer) => {
|
|
||||||
interaction.editReply({
|
|
||||||
embeds: [{
|
|
||||||
title: `${toTitleCase(type)} Outlook Day ${day + 1}`,
|
|
||||||
image: {
|
|
||||||
url: `attachment://${type}_${day}.png`
|
|
||||||
},
|
|
||||||
color: 0x00ff00
|
|
||||||
}],
|
|
||||||
files: [{
|
|
||||||
attachment: buffer,
|
|
||||||
name: `${type}_${day}.png`
|
|
||||||
}]
|
|
||||||
});
|
|
||||||
});
|
|
||||||
}).catch((err) => {
|
|
||||||
interaction.editReply({ content: "Failed to get outlook", ephemeral: true });
|
|
||||||
});
|
|
||||||
break;
|
|
||||||
}
|
}
|
||||||
|
break;
|
||||||
case Discord.InteractionType.MessageComponent:
|
case Discord.InteractionType.MessageComponent:
|
||||||
if (interaction.customId) {
|
if (interaction.customId) {
|
||||||
const product_id = interaction.customId;
|
const product_id = interaction.customId;
|
||||||
|
@ -1286,7 +1182,6 @@ discord.on("interactionCreate", async (interaction) => {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
discord.on("guildCreate", (guild) => {
|
discord.on("guildCreate", (guild) => {
|
||||||
|
|
Loading…
Reference in a new issue