This commit is contained in:
Christopher Cookman 2024-05-09 22:00:26 -06:00
parent 7f8abdf079
commit 30462b85f5
Signed by: ChrisChrome
GPG key ID: A023A26E42C33A42
4 changed files with 910 additions and 899 deletions

View file

@ -6,16 +6,26 @@ This is SUPER tossed together. Might bother cleaning it up later.
## What is this?
This is meant to be a public Discord bot. It connects via XMPP to Weather.IM and allows server owners to subscribe a channel to any number of weather alerts.
## Pre-requisites
1. Node.js
2. NPM
3. A Discord bot token
## How do I use this?
1. Clone the repo
2. Install the requirements
2. Install the requirements with `npm install`
3. Copy `config.example.json` to `config.json` and fill in the values
- `token` is your Discord bot token
- `owner` is your Discord user ID
- `mainGuild` is the ID of the guild you want to use as the main guild (This is used for making the support invite)
- `inviteChannel` is the ID of the channel you want to use for the support invite
- NTFY config is optional, leave enabled false if you don't want to use it or don't know how.
4. Run `node .`
5. Profit?
## TODO
- [X] Clean up the code
- [ ] Clean up the code
- [X] Add more error handling
- [X] Add more logging
- [X] Add more features
- [ ] Add more documentation
- [X] Add more documentation

View file

@ -13,893 +13,9 @@
"inviteChannel": "your_channel_id"
},
"ntfy": {
"enabled": true,
"enabled": false,
"server": "https://Example.com",
"token": "ntfy_access_token",
"prefix": "iem-"
},
"iem": {
"channels": [
{
"jid": "ilnchat@conference.weather.im",
"name": "ilnchat"
},
{
"jid": "zhuchat@conference.weather.im",
"name": "zhuchat"
},
{
"jid": "rerchat@conference.weather.im",
"name": "Record Event Reports (RER)"
},
{
"jid": "ncrfcchat@conference.weather.im",
"name": "ncrfcchat"
},
{
"jid": "zmechat@conference.weather.im",
"name": "zmechat"
},
{
"jid": "ggwchat@conference.weather.im",
"name": "ggwchat"
},
{
"jid": "sewchat@conference.weather.im",
"name": "sewchat"
},
{
"jid": "ohxchat@conference.weather.im",
"name": "ohxchat"
},
{
"jid": "megchat@conference.weather.im",
"name": "megchat"
},
{
"jid": "mobchat@conference.weather.im",
"name": "mobchat"
},
{
"jid": "brochat@conference.weather.im",
"name": "brochat"
},
{
"jid": "mkx_madison_spotters@conference.weather.im",
"name": "MKX madison storm spotters"
},
{
"jid": "ddcchat@conference.weather.im",
"name": "ddcchat"
},
{
"jid": "zanchat@conference.weather.im",
"name": "zanchat"
},
{
"jid": "mflchat@conference.weather.im",
"name": "mflchat"
},
{
"jid": "michiganwxalerts@conference.weather.im",
"name": "michiganwxalerts"
},
{
"jid": "dvnchat@conference.weather.im",
"name": "dvnchat"
},
{
"jid": "gjtchat@conference.weather.im",
"name": "gjtchat"
},
{
"jid": "ztlchat@conference.weather.im",
"name": "ztlchat"
},
{
"jid": "skywarnstatewidechase@conference.weather.im",
"name": "Skywarn Statewide Chase team"
},
{
"jid": "lmkchat@conference.weather.im",
"name": "lmkchat"
},
{
"jid": "wws44fl@conference.weather.im",
"name": "WWS Tampa Bay"
},
{
"jid": "hatchat@conference.weather.im",
"name": "hatchat"
},
{
"jid": "fwdchat@conference.weather.im",
"name": "fwdchat"
},
{
"jid": "boichat@conference.weather.im",
"name": "boichat"
},
{
"jid": "crisfield-chat@conference.weather.im",
"name": "crisfield-chat"
},
{
"jid": "slcchat@conference.weather.im",
"name": "slcchat"
},
{
"jid": "zobchat@conference.weather.im",
"name": "zobchat"
},
{
"jid": "amachat@conference.weather.im",
"name": "Amarillo, TX"
},
{
"jid": "pqrchat@conference.weather.im",
"name": "pqrchat"
},
{
"jid": "gstweather@conference.weather.im",
"name": "GST Weather"
},
{
"jid": "tws_chat@conference.weather.im",
"name": "tws_chat"
},
{
"jid": "franklin_chat@conference.weather.im",
"name": "Franklin VT Chatroom"
},
{
"jid": "zidchat@conference.weather.im",
"name": "zidchat"
},
{
"jid": "cnrfcchat@conference.weather.im",
"name": "cnrfcchat"
},
{
"jid": "nhcchat@conference.weather.im",
"name": "nhcchat"
},
{
"jid": "mke-skywarn@conference.weather.im",
"name": "MKE Skywarn"
},
{
"jid": "tnwxdiscuss@conference.weather.im",
"name": "TN Statewide Weather Discussion"
},
{
"jid": "stochat@conference.weather.im",
"name": "stochat"
},
{
"jid": "jklchat@conference.weather.im",
"name": "jklchat"
},
{
"jid": "grrchat@conference.weather.im",
"name": "grrchat"
},
{
"jid": "hnxchat@conference.weather.im",
"name": "hnxchat"
},
{
"jid": "spcchat@conference.weather.im",
"name": "Storm Prediction Center Chatroom"
},
{
"jid": "lchchat@conference.weather.im",
"name": "lchchat"
},
{
"jid": "khws@conference.weather.im",
"name": "Huffman Weather Service"
},
{
"jid": "kcichat@conference.weather.im",
"name": "kcichat"
},
{
"jid": "zbwchat@conference.weather.im",
"name": "zbwchat"
},
{
"jid": "otxchat@conference.weather.im",
"name": "otxchat"
},
{
"jid": "kodster@conference.weather.im",
"name": "kodster"
},
{
"jid": "vefchat@conference.weather.im",
"name": "vefchat"
},
{
"jid": "pubchat@conference.weather.im",
"name": "pubchat"
},
{
"jid": "wxst@conference.weather.im",
"name": "Nationwide Encoder Relay Program"
},
{
"jid": "psrchat@conference.weather.im",
"name": "psrchat"
},
{
"jid": "sgxchat@conference.weather.im",
"name": "sgxchat"
},
{
"jid": "pbzchat@conference.weather.im",
"name": "pbzchat"
},
{
"jid": "reddit_weatherlab@conference.weather.im",
"name": "reddit_weatherlab"
},
{
"jid": "nalsw@conference.weather.im",
"name": "nalsw"
},
{
"jid": "ekachat@conference.weather.im",
"name": "ekachat"
},
{
"jid": "ilxchat@conference.weather.im",
"name": "ilxchat"
},
{
"jid": "jsjchat@conference.weather.im",
"name": "jsjchat"
},
{
"jid": "barnburnerwi@conference.weather.im",
"name": "Barn Burner WI"
},
{
"jid": "ohiostormspottersteamoss@conference.weather.im",
"name": "Ohio storm Spotters Team oss"
},
{
"jid": "mlbchat@conference.weather.im",
"name": "mlbchat"
},
{
"jid": "arxchat@conference.weather.im",
"name": "arxchat"
},
{
"jid": "ilmchat@conference.weather.im",
"name": "ilmchat"
},
{
"jid": "okxchat@conference.weather.im",
"name": "okxchat"
},
{
"jid": "botstalk@conference.weather.im",
"name": "botstalk"
},
{
"jid": "lknchat@conference.weather.im",
"name": "lknchat"
},
{
"jid": "siawx_chat@conference.weather.im",
"name": "siawx_chat"
},
{
"jid": "rahchat@conference.weather.im",
"name": "rahchat"
},
{
"jid": "afcchat@conference.weather.im",
"name": "afcchat"
},
{
"jid": "lotchat@conference.weather.im",
"name": "lotchat"
},
{
"jid": "n90@conference.weather.im",
"name": "n90"
},
{
"jid": "boxchat@conference.weather.im",
"name": "boxchat"
},
{
"jid": "znychat@conference.weather.im",
"name": "znychat"
},
{
"jid": "akqchat@conference.weather.im",
"name": "akqchat"
},
{
"jid": "nerfcchat@conference.weather.im",
"name": "nerfcchat"
},
{
"jid": "zkcchat@conference.weather.im",
"name": "zkcchat"
},
{
"jid": "bischat@conference.weather.im",
"name": "bischat"
},
{
"jid": "twcchat@conference.weather.im",
"name": "twcchat"
},
{
"jid": "lmrfcchat@conference.weather.im",
"name": "lmrfcchat"
},
{
"jid": "abrchat@conference.weather.im",
"name": "abrchat"
},
{
"jid": "mbrfcchat@conference.weather.im",
"name": "mbrfcchat"
},
{
"jid": "pihchat@conference.weather.im",
"name": "pihchat"
},
{
"jid": "zoachat@conference.weather.im",
"name": "zoachat"
},
{
"jid": "mtrchat@conference.weather.im",
"name": "mtrchat"
},
{
"jid": "sjuchat@conference.weather.im",
"name": "sjuchat"
},
{
"jid": "gidchat@conference.weather.im",
"name": "gidchat"
},
{
"jid": "zmpchat@conference.weather.im",
"name": "zmpchat"
},
{
"jid": "phichat@conference.weather.im",
"name": "phichat"
},
{
"jid": "pitchat@conference.weather.im",
"name": "WWS Pittsburgh"
},
{
"jid": "chschat@conference.weather.im",
"name": "chschat"
},
{
"jid": "ajkchat@conference.weather.im",
"name": "ajkchat"
},
{
"jid": "chachat@conference.weather.im",
"name": "WWS Charlotte"
},
{
"jid": "bmxchat@conference.weather.im",
"name": "bmxchat"
},
{
"jid": "lixchat@conference.weather.im",
"name": "lixchat"
},
{
"jid": "apxchat@conference.weather.im",
"name": "apxchat"
},
{
"jid": "hunchat@conference.weather.im",
"name": "hunchat"
},
{
"jid": "spcmobile2006@conference.weather.im",
"name": "spcmobile2006"
},
{
"jid": "zmachat@conference.weather.im",
"name": "zmachat"
},
{
"jid": "phl@conference.weather.im",
"name": "PHL TRACON"
},
{
"jid": "dtxchat@conference.weather.im",
"name": "dtxchat"
},
{
"jid": "wbkoweatherwatchers@conference.weather.im",
"name": "wbkoweatherwatchers"
},
{
"jid": "gumchat@conference.weather.im",
"name": "gumchat"
},
{
"jid": "gcwxchat@conference.weather.im",
"name": "gcwxchat"
},
{
"jid": "zzmkxchat@conference.weather.im",
"name": "zzmkxchat"
},
{
"jid": "dentcoeas@conference.weather.im",
"name": "dentcoeas"
},
{
"jid": "marfcchat@conference.weather.im",
"name": "marfcchat"
},
{
"jid": "easwtalk@conference.weather.im",
"name": "easwtalk"
},
{
"jid": "crpchat@conference.weather.im",
"name": "crpchat"
},
{
"jid": "gccc-nc-skywarn@conference.weather.im",
"name": "GCCC NC Skywarn"
},
{
"jid": "zjxchat@conference.weather.im",
"name": "zjxchat"
},
{
"jid": "shvchat@conference.weather.im",
"name": "shvchat"
},
{
"jid": "tbwchat@conference.weather.im",
"name": "tbwchat"
},
{
"jid": "cyschat@conference.weather.im",
"name": "cyschat"
},
{
"jid": "hfochat@conference.weather.im",
"name": "hfochat"
},
{
"jid": "dmxchat@conference.weather.im",
"name": "Des Moines, IA"
},
{
"jid": "mseas-weather-discussion@conference.weather.im",
"name": "MSEAS-Weather-Discussion"
},
{
"jid": "zsechat@conference.weather.im",
"name": "zsechat"
},
{
"jid": "revchat@conference.weather.im",
"name": "revchat"
},
{
"jid": "carchat@conference.weather.im",
"name": "carchat"
},
{
"jid": "msochat@conference.weather.im",
"name": "msochat"
},
{
"jid": "abc3340@conference.weather.im",
"name": "abc3340"
},
{
"jid": "keychat@conference.weather.im",
"name": "keychat"
},
{
"jid": "riwchat@conference.weather.im",
"name": "riwchat"
},
{
"jid": "awpwxchat@conference.weather.im",
"name": "awpwxchat"
},
{
"jid": "mhxchat@conference.weather.im",
"name": "mhxchat"
},
{
"jid": "caechat@conference.weather.im",
"name": "caechat"
},
{
"jid": "indchat@conference.weather.im",
"name": "indchat"
},
{
"jid": "dlhchat@conference.weather.im",
"name": "dlhchat"
},
{
"jid": "unrchat@conference.weather.im",
"name": "unrchat"
},
{
"jid": "wilchat@conference.weather.im",
"name": "WWS Columbus/Wilmington"
},
{
"jid": "okc_chatrooms@conference.weather.im",
"name": "okc_chatrooms"
},
{
"jid": "kdtxchat@conference.weather.im",
"name": "kdtxchat"
},
{
"jid": "zabchat@conference.weather.im",
"name": "zabchat"
},
{
"jid": "wnpchat@conference.weather.im",
"name": "wnpchat"
},
{
"jid": "zlcchat@conference.weather.im",
"name": "zlcchat"
},
{
"jid": "ffcchat@conference.weather.im",
"name": "ffcchat"
},
{
"jid": "epzchat@conference.weather.im",
"name": "epzchat"
},
{
"jid": "taechat@conference.weather.im",
"name": "taechat"
},
{
"jid": "fox6chat@conference.weather.im",
"name": "fox6chat"
},
{
"jid": "cbrfcchat@conference.weather.im",
"name": "cbrfcchat"
},
{
"jid": "wisconsin_storm_spotters@conference.weather.im",
"name": "Wisconsin Storm Spotters"
},
{
"jid": "tfxchat@conference.weather.im",
"name": "tfxchat"
},
{
"jid": "abqchat@conference.weather.im",
"name": "abqchat"
},
{
"jid": "nwrfcchat@conference.weather.im",
"name": "nwrfcchat"
},
{
"jid": "rlxchat@conference.weather.im",
"name": "rlxchat"
},
{
"jid": "ounchat@conference.weather.im",
"name": "ounchat"
},
{
"jid": "clechat@conference.weather.im",
"name": "clechat"
},
{
"jid": "loxchat@conference.weather.im",
"name": "loxchat"
},
{
"jid": "fsdchat@conference.weather.im",
"name": "fsdchat"
},
{
"jid": "bgmchat@conference.weather.im",
"name": "bgmchat"
},
{
"jid": "wgrfcchat@conference.weather.im",
"name": "wgrfcchat"
},
{
"jid": "ewxchat@conference.weather.im",
"name": "ewxchat"
},
{
"jid": "uswat@conference.weather.im",
"name": "Uswat United States weather team"
},
{
"jid": "iowawx@conference.weather.im",
"name": "iowawx"
},
{
"jid": "ohrfcchat@conference.weather.im",
"name": "ohrfcchat"
},
{
"jid": "serfcchat@conference.weather.im",
"name": "serfcchat"
},
{
"jid": "stichat@conference.weather.im",
"name": "stichat"
},
{
"jid": "zdvchat@conference.weather.im",
"name": "zdvchat"
},
{
"jid": "eaxchat@conference.weather.im",
"name": "eaxchat"
},
{
"jid": "iwxchat@conference.weather.im",
"name": "iwxchat"
},
{
"jid": "lubchat@conference.weather.im",
"name": "lubchat"
},
{
"jid": "whntweather@conference.weather.im",
"name": "whntweather"
},
{
"jid": "bufchat@conference.weather.im",
"name": "bufchat"
},
{
"jid": "pdtchat@conference.weather.im",
"name": "pdtchat"
},
{
"jid": "knsw@conference.weather.im",
"name": "knsw"
},
{
"jid": "mkxchat@conference.weather.im",
"name": "mkxchat"
},
{
"jid": "test@conference.weather.im",
"name": "test"
},
{
"jid": "abc3340skywatcher@conference.weather.im",
"name": "abc3340skywatcher"
},
{
"jid": "grbchat@conference.weather.im",
"name": "grbchat"
},
{
"jid": "topchat@conference.weather.im",
"name": "topchat"
},
{
"jid": "rnkchat@conference.weather.im",
"name": "rnkchat"
},
{
"jid": "lzkchat@conference.weather.im",
"name": "lzkchat"
},
{
"jid": "ctpchat@conference.weather.im",
"name": "ctpchat"
},
{
"jid": "gldchat@conference.weather.im",
"name": "gldchat"
},
{
"jid": "abrfcchat@conference.weather.im",
"name": "abrfcchat"
},
{
"jid": "byzchat@conference.weather.im",
"name": "byzchat"
},
{
"jid": "mpxchat@conference.weather.im",
"name": "mpxchat"
},
{
"jid": "zdcchat@conference.weather.im",
"name": "zdcchat"
},
{
"jid": "lsxchat@conference.weather.im",
"name": "lsxchat"
},
{
"jid": "pahchat@conference.weather.im",
"name": "pahchat"
},
{
"jid": "bouchat@conference.weather.im",
"name": "Boulder, CO"
},
{
"jid": "tsachat@conference.weather.im",
"name": "tsachat"
},
{
"jid": "bmxspotterchat@conference.weather.im",
"name": "bmxspotterchat"
},
{
"jid": "zfwchat@conference.weather.im",
"name": "zfwchat"
},
{
"jid": "zauchat@conference.weather.im",
"name": "zauchat"
},
{
"jid": "aprfcchat@conference.weather.im",
"name": "aprfcchat"
},
{
"jid": "wwsreport@conference.weather.im",
"name": "WWS Report"
},
{
"jid": "bmxalertchat@conference.weather.im",
"name": "bmxalertchat"
},
{
"jid": "mqtchat@conference.weather.im",
"name": "mqtchat"
},
{
"jid": "mafchat@conference.weather.im",
"name": "mafchat"
},
{
"jid": "mrxchat@conference.weather.im",
"name": "mrxchat"
},
{
"jid": "fgzchat@conference.weather.im",
"name": "fgzchat"
},
{
"jid": "twitter@conference.weather.im",
"name": "twitter"
},
{
"jid": "oaxchat@conference.weather.im",
"name": "oaxchat"
},
{
"jid": "btvchat@conference.weather.im",
"name": "btvchat"
},
{
"jid": "potomac_tracon@conference.weather.im",
"name": "Potomac TRACON"
},
{
"jid": "ictchat@conference.weather.im",
"name": "ictchat"
},
{
"jid": "mfrchat@conference.weather.im",
"name": "mfrchat"
},
{
"jid": "detroiteaschat@conference.weather.im",
"name": "detroiteaschat"
},
{
"jid": "hgxchat@conference.weather.im",
"name": "hgxchat"
},
{
"jid": "afgchat@conference.weather.im",
"name": "afgchat"
},
{
"jid": "sgfchat@conference.weather.im",
"name": "sgfchat"
},
{
"jid": "hawaii@conference.weather.im",
"name": "Hawaii Weather"
},
{
"jid": "cwest@conference.weather.im",
"name": "CWEST"
},
{
"jid": "zlachat@conference.weather.im",
"name": "zlachat"
},
{
"jid": "alychat@conference.weather.im",
"name": "alychat"
},
{
"jid": "sjtchat@conference.weather.im",
"name": "sjtchat"
},
{
"jid": "janchat@conference.weather.im",
"name": "janchat"
},
{
"jid": "gspchat@conference.weather.im",
"name": "gspchat"
},
{
"jid": "lwxchat@conference.weather.im",
"name": "lwxchat"
},
{
"jid": "gyxchat@conference.weather.im",
"name": "gyxchat"
},
{
"jid": "wpcchat@conference.weather.im",
"name": "WPC Chatroom"
},
{
"jid": "sweaseops1@conference.weather.im",
"name": "sweaseops1"
},
{
"jid": "scwx@conference.weather.im",
"name": "South Carolina Weather"
},
{
"jid": "lbfchat@conference.weather.im",
"name": "lbfchat"
},
{
"jid": "jaxchat@conference.weather.im",
"name": "jaxchat"
},
{
"jid": "nwsc@conference.weather.im",
"name": "Nate's Weather Safety Center"
},
{
"jid": "fgfchat@conference.weather.im",
"name": "fgfchat"
}
]
}
}

884
iem.json Normal file
View file

@ -0,0 +1,884 @@
{
"channels": [
{
"jid": "ilnchat@conference.weather.im",
"name": "ilnchat"
},
{
"jid": "zhuchat@conference.weather.im",
"name": "zhuchat"
},
{
"jid": "rerchat@conference.weather.im",
"name": "Record Event Reports (RER)"
},
{
"jid": "ncrfcchat@conference.weather.im",
"name": "ncrfcchat"
},
{
"jid": "zmechat@conference.weather.im",
"name": "zmechat"
},
{
"jid": "ggwchat@conference.weather.im",
"name": "ggwchat"
},
{
"jid": "sewchat@conference.weather.im",
"name": "sewchat"
},
{
"jid": "ohxchat@conference.weather.im",
"name": "ohxchat"
},
{
"jid": "megchat@conference.weather.im",
"name": "megchat"
},
{
"jid": "mobchat@conference.weather.im",
"name": "mobchat"
},
{
"jid": "brochat@conference.weather.im",
"name": "brochat"
},
{
"jid": "mkx_madison_spotters@conference.weather.im",
"name": "MKX madison storm spotters"
},
{
"jid": "ddcchat@conference.weather.im",
"name": "ddcchat"
},
{
"jid": "zanchat@conference.weather.im",
"name": "zanchat"
},
{
"jid": "mflchat@conference.weather.im",
"name": "mflchat"
},
{
"jid": "michiganwxalerts@conference.weather.im",
"name": "michiganwxalerts"
},
{
"jid": "dvnchat@conference.weather.im",
"name": "dvnchat"
},
{
"jid": "gjtchat@conference.weather.im",
"name": "gjtchat"
},
{
"jid": "ztlchat@conference.weather.im",
"name": "ztlchat"
},
{
"jid": "skywarnstatewidechase@conference.weather.im",
"name": "Skywarn Statewide Chase team"
},
{
"jid": "lmkchat@conference.weather.im",
"name": "lmkchat"
},
{
"jid": "wws44fl@conference.weather.im",
"name": "WWS Tampa Bay"
},
{
"jid": "hatchat@conference.weather.im",
"name": "hatchat"
},
{
"jid": "fwdchat@conference.weather.im",
"name": "fwdchat"
},
{
"jid": "boichat@conference.weather.im",
"name": "boichat"
},
{
"jid": "crisfield-chat@conference.weather.im",
"name": "crisfield-chat"
},
{
"jid": "slcchat@conference.weather.im",
"name": "slcchat"
},
{
"jid": "zobchat@conference.weather.im",
"name": "zobchat"
},
{
"jid": "amachat@conference.weather.im",
"name": "Amarillo, TX"
},
{
"jid": "pqrchat@conference.weather.im",
"name": "pqrchat"
},
{
"jid": "gstweather@conference.weather.im",
"name": "GST Weather"
},
{
"jid": "tws_chat@conference.weather.im",
"name": "tws_chat"
},
{
"jid": "franklin_chat@conference.weather.im",
"name": "Franklin VT Chatroom"
},
{
"jid": "zidchat@conference.weather.im",
"name": "zidchat"
},
{
"jid": "cnrfcchat@conference.weather.im",
"name": "cnrfcchat"
},
{
"jid": "nhcchat@conference.weather.im",
"name": "nhcchat"
},
{
"jid": "mke-skywarn@conference.weather.im",
"name": "MKE Skywarn"
},
{
"jid": "tnwxdiscuss@conference.weather.im",
"name": "TN Statewide Weather Discussion"
},
{
"jid": "stochat@conference.weather.im",
"name": "stochat"
},
{
"jid": "jklchat@conference.weather.im",
"name": "jklchat"
},
{
"jid": "grrchat@conference.weather.im",
"name": "grrchat"
},
{
"jid": "hnxchat@conference.weather.im",
"name": "hnxchat"
},
{
"jid": "spcchat@conference.weather.im",
"name": "Storm Prediction Center Chatroom"
},
{
"jid": "lchchat@conference.weather.im",
"name": "lchchat"
},
{
"jid": "khws@conference.weather.im",
"name": "Huffman Weather Service"
},
{
"jid": "kcichat@conference.weather.im",
"name": "kcichat"
},
{
"jid": "zbwchat@conference.weather.im",
"name": "zbwchat"
},
{
"jid": "otxchat@conference.weather.im",
"name": "otxchat"
},
{
"jid": "kodster@conference.weather.im",
"name": "kodster"
},
{
"jid": "vefchat@conference.weather.im",
"name": "vefchat"
},
{
"jid": "pubchat@conference.weather.im",
"name": "pubchat"
},
{
"jid": "wxst@conference.weather.im",
"name": "Nationwide Encoder Relay Program"
},
{
"jid": "psrchat@conference.weather.im",
"name": "psrchat"
},
{
"jid": "sgxchat@conference.weather.im",
"name": "sgxchat"
},
{
"jid": "pbzchat@conference.weather.im",
"name": "pbzchat"
},
{
"jid": "reddit_weatherlab@conference.weather.im",
"name": "reddit_weatherlab"
},
{
"jid": "nalsw@conference.weather.im",
"name": "nalsw"
},
{
"jid": "ekachat@conference.weather.im",
"name": "ekachat"
},
{
"jid": "ilxchat@conference.weather.im",
"name": "ilxchat"
},
{
"jid": "jsjchat@conference.weather.im",
"name": "jsjchat"
},
{
"jid": "barnburnerwi@conference.weather.im",
"name": "Barn Burner WI"
},
{
"jid": "ohiostormspottersteamoss@conference.weather.im",
"name": "Ohio storm Spotters Team oss"
},
{
"jid": "mlbchat@conference.weather.im",
"name": "mlbchat"
},
{
"jid": "arxchat@conference.weather.im",
"name": "arxchat"
},
{
"jid": "ilmchat@conference.weather.im",
"name": "ilmchat"
},
{
"jid": "okxchat@conference.weather.im",
"name": "okxchat"
},
{
"jid": "botstalk@conference.weather.im",
"name": "botstalk"
},
{
"jid": "lknchat@conference.weather.im",
"name": "lknchat"
},
{
"jid": "siawx_chat@conference.weather.im",
"name": "siawx_chat"
},
{
"jid": "rahchat@conference.weather.im",
"name": "rahchat"
},
{
"jid": "afcchat@conference.weather.im",
"name": "afcchat"
},
{
"jid": "lotchat@conference.weather.im",
"name": "lotchat"
},
{
"jid": "n90@conference.weather.im",
"name": "n90"
},
{
"jid": "boxchat@conference.weather.im",
"name": "boxchat"
},
{
"jid": "znychat@conference.weather.im",
"name": "znychat"
},
{
"jid": "akqchat@conference.weather.im",
"name": "akqchat"
},
{
"jid": "nerfcchat@conference.weather.im",
"name": "nerfcchat"
},
{
"jid": "zkcchat@conference.weather.im",
"name": "zkcchat"
},
{
"jid": "bischat@conference.weather.im",
"name": "bischat"
},
{
"jid": "twcchat@conference.weather.im",
"name": "twcchat"
},
{
"jid": "lmrfcchat@conference.weather.im",
"name": "lmrfcchat"
},
{
"jid": "abrchat@conference.weather.im",
"name": "abrchat"
},
{
"jid": "mbrfcchat@conference.weather.im",
"name": "mbrfcchat"
},
{
"jid": "pihchat@conference.weather.im",
"name": "pihchat"
},
{
"jid": "zoachat@conference.weather.im",
"name": "zoachat"
},
{
"jid": "mtrchat@conference.weather.im",
"name": "mtrchat"
},
{
"jid": "sjuchat@conference.weather.im",
"name": "sjuchat"
},
{
"jid": "gidchat@conference.weather.im",
"name": "gidchat"
},
{
"jid": "zmpchat@conference.weather.im",
"name": "zmpchat"
},
{
"jid": "phichat@conference.weather.im",
"name": "phichat"
},
{
"jid": "pitchat@conference.weather.im",
"name": "WWS Pittsburgh"
},
{
"jid": "chschat@conference.weather.im",
"name": "chschat"
},
{
"jid": "ajkchat@conference.weather.im",
"name": "ajkchat"
},
{
"jid": "chachat@conference.weather.im",
"name": "WWS Charlotte"
},
{
"jid": "bmxchat@conference.weather.im",
"name": "bmxchat"
},
{
"jid": "lixchat@conference.weather.im",
"name": "lixchat"
},
{
"jid": "apxchat@conference.weather.im",
"name": "apxchat"
},
{
"jid": "hunchat@conference.weather.im",
"name": "hunchat"
},
{
"jid": "spcmobile2006@conference.weather.im",
"name": "spcmobile2006"
},
{
"jid": "zmachat@conference.weather.im",
"name": "zmachat"
},
{
"jid": "phl@conference.weather.im",
"name": "PHL TRACON"
},
{
"jid": "dtxchat@conference.weather.im",
"name": "dtxchat"
},
{
"jid": "wbkoweatherwatchers@conference.weather.im",
"name": "wbkoweatherwatchers"
},
{
"jid": "gumchat@conference.weather.im",
"name": "gumchat"
},
{
"jid": "gcwxchat@conference.weather.im",
"name": "gcwxchat"
},
{
"jid": "zzmkxchat@conference.weather.im",
"name": "zzmkxchat"
},
{
"jid": "dentcoeas@conference.weather.im",
"name": "dentcoeas"
},
{
"jid": "marfcchat@conference.weather.im",
"name": "marfcchat"
},
{
"jid": "easwtalk@conference.weather.im",
"name": "easwtalk"
},
{
"jid": "crpchat@conference.weather.im",
"name": "crpchat"
},
{
"jid": "gccc-nc-skywarn@conference.weather.im",
"name": "GCCC NC Skywarn"
},
{
"jid": "zjxchat@conference.weather.im",
"name": "zjxchat"
},
{
"jid": "shvchat@conference.weather.im",
"name": "shvchat"
},
{
"jid": "tbwchat@conference.weather.im",
"name": "tbwchat"
},
{
"jid": "cyschat@conference.weather.im",
"name": "cyschat"
},
{
"jid": "hfochat@conference.weather.im",
"name": "hfochat"
},
{
"jid": "dmxchat@conference.weather.im",
"name": "Des Moines, IA"
},
{
"jid": "mseas-weather-discussion@conference.weather.im",
"name": "MSEAS-Weather-Discussion"
},
{
"jid": "zsechat@conference.weather.im",
"name": "zsechat"
},
{
"jid": "revchat@conference.weather.im",
"name": "revchat"
},
{
"jid": "carchat@conference.weather.im",
"name": "carchat"
},
{
"jid": "msochat@conference.weather.im",
"name": "msochat"
},
{
"jid": "abc3340@conference.weather.im",
"name": "abc3340"
},
{
"jid": "keychat@conference.weather.im",
"name": "keychat"
},
{
"jid": "riwchat@conference.weather.im",
"name": "riwchat"
},
{
"jid": "awpwxchat@conference.weather.im",
"name": "awpwxchat"
},
{
"jid": "mhxchat@conference.weather.im",
"name": "mhxchat"
},
{
"jid": "caechat@conference.weather.im",
"name": "caechat"
},
{
"jid": "indchat@conference.weather.im",
"name": "indchat"
},
{
"jid": "dlhchat@conference.weather.im",
"name": "dlhchat"
},
{
"jid": "unrchat@conference.weather.im",
"name": "unrchat"
},
{
"jid": "wilchat@conference.weather.im",
"name": "WWS Columbus/Wilmington"
},
{
"jid": "okc_chatrooms@conference.weather.im",
"name": "okc_chatrooms"
},
{
"jid": "kdtxchat@conference.weather.im",
"name": "kdtxchat"
},
{
"jid": "zabchat@conference.weather.im",
"name": "zabchat"
},
{
"jid": "wnpchat@conference.weather.im",
"name": "wnpchat"
},
{
"jid": "zlcchat@conference.weather.im",
"name": "zlcchat"
},
{
"jid": "ffcchat@conference.weather.im",
"name": "ffcchat"
},
{
"jid": "epzchat@conference.weather.im",
"name": "epzchat"
},
{
"jid": "taechat@conference.weather.im",
"name": "taechat"
},
{
"jid": "fox6chat@conference.weather.im",
"name": "fox6chat"
},
{
"jid": "cbrfcchat@conference.weather.im",
"name": "cbrfcchat"
},
{
"jid": "wisconsin_storm_spotters@conference.weather.im",
"name": "Wisconsin Storm Spotters"
},
{
"jid": "tfxchat@conference.weather.im",
"name": "tfxchat"
},
{
"jid": "abqchat@conference.weather.im",
"name": "abqchat"
},
{
"jid": "nwrfcchat@conference.weather.im",
"name": "nwrfcchat"
},
{
"jid": "rlxchat@conference.weather.im",
"name": "rlxchat"
},
{
"jid": "ounchat@conference.weather.im",
"name": "ounchat"
},
{
"jid": "clechat@conference.weather.im",
"name": "clechat"
},
{
"jid": "loxchat@conference.weather.im",
"name": "loxchat"
},
{
"jid": "fsdchat@conference.weather.im",
"name": "fsdchat"
},
{
"jid": "bgmchat@conference.weather.im",
"name": "bgmchat"
},
{
"jid": "wgrfcchat@conference.weather.im",
"name": "wgrfcchat"
},
{
"jid": "ewxchat@conference.weather.im",
"name": "ewxchat"
},
{
"jid": "uswat@conference.weather.im",
"name": "Uswat United States weather team"
},
{
"jid": "iowawx@conference.weather.im",
"name": "iowawx"
},
{
"jid": "ohrfcchat@conference.weather.im",
"name": "ohrfcchat"
},
{
"jid": "serfcchat@conference.weather.im",
"name": "serfcchat"
},
{
"jid": "stichat@conference.weather.im",
"name": "stichat"
},
{
"jid": "zdvchat@conference.weather.im",
"name": "zdvchat"
},
{
"jid": "eaxchat@conference.weather.im",
"name": "eaxchat"
},
{
"jid": "iwxchat@conference.weather.im",
"name": "iwxchat"
},
{
"jid": "lubchat@conference.weather.im",
"name": "lubchat"
},
{
"jid": "whntweather@conference.weather.im",
"name": "whntweather"
},
{
"jid": "bufchat@conference.weather.im",
"name": "bufchat"
},
{
"jid": "pdtchat@conference.weather.im",
"name": "pdtchat"
},
{
"jid": "knsw@conference.weather.im",
"name": "knsw"
},
{
"jid": "mkxchat@conference.weather.im",
"name": "mkxchat"
},
{
"jid": "test@conference.weather.im",
"name": "test"
},
{
"jid": "abc3340skywatcher@conference.weather.im",
"name": "abc3340skywatcher"
},
{
"jid": "grbchat@conference.weather.im",
"name": "grbchat"
},
{
"jid": "topchat@conference.weather.im",
"name": "topchat"
},
{
"jid": "rnkchat@conference.weather.im",
"name": "rnkchat"
},
{
"jid": "lzkchat@conference.weather.im",
"name": "lzkchat"
},
{
"jid": "ctpchat@conference.weather.im",
"name": "ctpchat"
},
{
"jid": "gldchat@conference.weather.im",
"name": "gldchat"
},
{
"jid": "abrfcchat@conference.weather.im",
"name": "abrfcchat"
},
{
"jid": "byzchat@conference.weather.im",
"name": "byzchat"
},
{
"jid": "mpxchat@conference.weather.im",
"name": "mpxchat"
},
{
"jid": "zdcchat@conference.weather.im",
"name": "zdcchat"
},
{
"jid": "lsxchat@conference.weather.im",
"name": "lsxchat"
},
{
"jid": "pahchat@conference.weather.im",
"name": "pahchat"
},
{
"jid": "bouchat@conference.weather.im",
"name": "Boulder, CO"
},
{
"jid": "tsachat@conference.weather.im",
"name": "tsachat"
},
{
"jid": "bmxspotterchat@conference.weather.im",
"name": "bmxspotterchat"
},
{
"jid": "zfwchat@conference.weather.im",
"name": "zfwchat"
},
{
"jid": "zauchat@conference.weather.im",
"name": "zauchat"
},
{
"jid": "aprfcchat@conference.weather.im",
"name": "aprfcchat"
},
{
"jid": "wwsreport@conference.weather.im",
"name": "WWS Report"
},
{
"jid": "bmxalertchat@conference.weather.im",
"name": "bmxalertchat"
},
{
"jid": "mqtchat@conference.weather.im",
"name": "mqtchat"
},
{
"jid": "mafchat@conference.weather.im",
"name": "mafchat"
},
{
"jid": "mrxchat@conference.weather.im",
"name": "mrxchat"
},
{
"jid": "fgzchat@conference.weather.im",
"name": "fgzchat"
},
{
"jid": "twitter@conference.weather.im",
"name": "twitter"
},
{
"jid": "oaxchat@conference.weather.im",
"name": "oaxchat"
},
{
"jid": "btvchat@conference.weather.im",
"name": "btvchat"
},
{
"jid": "potomac_tracon@conference.weather.im",
"name": "Potomac TRACON"
},
{
"jid": "ictchat@conference.weather.im",
"name": "ictchat"
},
{
"jid": "mfrchat@conference.weather.im",
"name": "mfrchat"
},
{
"jid": "detroiteaschat@conference.weather.im",
"name": "detroiteaschat"
},
{
"jid": "hgxchat@conference.weather.im",
"name": "hgxchat"
},
{
"jid": "afgchat@conference.weather.im",
"name": "afgchat"
},
{
"jid": "sgfchat@conference.weather.im",
"name": "sgfchat"
},
{
"jid": "hawaii@conference.weather.im",
"name": "Hawaii Weather"
},
{
"jid": "cwest@conference.weather.im",
"name": "CWEST"
},
{
"jid": "zlachat@conference.weather.im",
"name": "zlachat"
},
{
"jid": "alychat@conference.weather.im",
"name": "alychat"
},
{
"jid": "sjtchat@conference.weather.im",
"name": "sjtchat"
},
{
"jid": "janchat@conference.weather.im",
"name": "janchat"
},
{
"jid": "gspchat@conference.weather.im",
"name": "gspchat"
},
{
"jid": "lwxchat@conference.weather.im",
"name": "lwxchat"
},
{
"jid": "gyxchat@conference.weather.im",
"name": "gyxchat"
},
{
"jid": "wpcchat@conference.weather.im",
"name": "WPC Chatroom"
},
{
"jid": "sweaseops1@conference.weather.im",
"name": "sweaseops1"
},
{
"jid": "scwx@conference.weather.im",
"name": "South Carolina Weather"
},
{
"jid": "lbfchat@conference.weather.im",
"name": "lbfchat"
},
{
"jid": "jaxchat@conference.weather.im",
"name": "jaxchat"
},
{
"jid": "nwsc@conference.weather.im",
"name": "Nate's Weather Safety Center"
},
{
"jid": "fgfchat@conference.weather.im",
"name": "fgfchat"
}
]
}

View file

@ -1,6 +1,7 @@
// Requires
const config = require("./config.json");
const wfos = require("./wfos.json");
const iem = require("./iem.json");
const events = require("./events.json");
const { client, xml } = require("@xmpp/client");
const fetch = require("node-fetch");
@ -423,7 +424,7 @@ xmpp.on("online", async (address) => {
errCount = 0;
// Start listening on all channels, (dont ban me funny man)
// for (const channel in config.iem.channels) {
// for (const channel in iem.channels) {
// console.log(`Joining ${channel.name}`)
// await xmpp.send(xml("presence", { to: `${channel.jud}/${channel.name}` }));
// }
@ -437,7 +438,7 @@ xmpp.on("online", async (address) => {
</presence>
*/
// Join all channels
config.iem.channels.forEach((channel => {
iem.channels.forEach((channel => {
console.log(`${colors.cyan("[INFO]")} Joining ${channel.jid.split("@")[0]}:${channel.name}`)
//xmpp.send(xml("presence", { to: `${channel.jid}/${channel.jid.split("@")[0]}` }));
xmpp.send(xml("presence", { to: `${channel.jid}/${channel.name}/${generateUUID()}` }, xml("item", { role: "visitor" })));
@ -705,7 +706,7 @@ discord.on("interactionCreate", async (interaction) => {
switch (interaction.commandName) {
case "subscribe":
room = getWFOroom(interaction.options.getString("room"));
if (!config.iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
if (!iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
interaction.reply({ content: "Invalid room", ephemeral: true });
return;
}
@ -722,7 +723,7 @@ discord.on("interactionCreate", async (interaction) => {
case "unsubscribe":
// Check that the room is valid
room = getWFOroom(interaction.options.getString("room"));
if (!config.iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
if (!iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
interaction.reply({ content: "Invalid room", ephemeral: true });
return;
}
@ -754,7 +755,7 @@ discord.on("interactionCreate", async (interaction) => {
break;
case "setmessage":
room = getWFOroom(interaction.options.getString("room"));
if (!config.iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
if (!iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
interaction.reply({ content: "Invalid room", ephemeral: true });
return;
}
@ -822,7 +823,7 @@ discord.on("interactionCreate", async (interaction) => {
case "rooms":
// // Send an embed showing all the available rooms
// let roomList = "";
// config.iem.channels.forEach((channel) => {
// iem.channels.forEach((channel) => {
// room = channel.jid.split("@")[0]
// console.log(getWFOByRoom(room))
// roomList += `\`${room}\`: ${getWFOByRoom(room).location}\n`;
@ -835,7 +836,7 @@ discord.on("interactionCreate", async (interaction) => {
// interaction.reply({ embeds: [roomEmbed], ephemeral: true });
// Do the above, but paginate like the product text
let roomList = "";
config.iem.channels.forEach((channel) => {
iem.channels.forEach((channel) => {
room = channel.jid.split("@")[0]
roomList += `\`${room}\`: ${getWFOByRoom(room).location || "Unknown"}\n`;
});
@ -856,9 +857,9 @@ discord.on("interactionCreate", async (interaction) => {
// Create channels for all rooms
const chunks = [];
const chunkSize = 50;
const totalRooms = config.iem.channels.length;
const totalRooms = iem.channels.length;
for (let i = 0; i < totalRooms; i += chunkSize) {
chunks.push(config.iem.channels.slice(i, i + chunkSize));
chunks.push(iem.channels.slice(i, i + chunkSize));
}
chunks.forEach((chunk, index) => {
@ -980,7 +981,7 @@ discord.on("interactionCreate", async (interaction) => {
case "usersubscribe":
room = getWFOroom(interaction.options.getString("room"));
if (!config.iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
if (!iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
interaction.reply({ content: "Invalid room", ephemeral: true });
return;
}
@ -998,7 +999,7 @@ discord.on("interactionCreate", async (interaction) => {
break;
case "userunsubscribe":
room = getWFOroom(interaction.options.getString("room"));
if (!config.iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
if (!iem.channels.find((channel) => channel.jid.split("@")[0] === room)) {
interaction.reply({ content: "Invalid room", ephemeral: true });
return;
}