mirror of
https://github.com/cloudmaker97/FS25-Discord-Bot.git
synced 2025-12-06 08:28:33 +00:00
Compare commits
No commits in common. "main" and "0.1.0" have entirely different histories.
32 changed files with 889 additions and 4449 deletions
44
.github/workflows/docker-build.yml
vendored
44
.github/workflows/docker-build.yml
vendored
|
|
@ -1,44 +0,0 @@
|
||||||
name: Docker Build
|
|
||||||
|
|
||||||
on:
|
|
||||||
push:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
pull_request:
|
|
||||||
branches:
|
|
||||||
- main
|
|
||||||
|
|
||||||
env:
|
|
||||||
REGISTRY: ghcr.io
|
|
||||||
IMAGE_NAME: ${{ github.repository }}
|
|
||||||
|
|
||||||
jobs:
|
|
||||||
build-and-push:
|
|
||||||
runs-on: ubuntu-latest
|
|
||||||
permissions:
|
|
||||||
contents: read
|
|
||||||
packages: write
|
|
||||||
steps:
|
|
||||||
- name: Checkout repository
|
|
||||||
uses: actions/checkout@v3
|
|
||||||
|
|
||||||
- name: Log in to the Container registry
|
|
||||||
uses: docker/login-action@v3
|
|
||||||
with:
|
|
||||||
registry: ${{ env.REGISTRY }}
|
|
||||||
username: ${{ github.actor }}
|
|
||||||
password: ${{ secrets.GITHUB_TOKEN }}
|
|
||||||
|
|
||||||
- name: Extract metadata (tags, labels) for Docker
|
|
||||||
id: meta
|
|
||||||
uses: docker/metadata-action@v5
|
|
||||||
with:
|
|
||||||
images: ${{ env.REGISTRY }}/${{ env.IMAGE_NAME }}
|
|
||||||
|
|
||||||
- name: Build and push Docker image
|
|
||||||
uses: docker/build-push-action@v5
|
|
||||||
with:
|
|
||||||
context: .
|
|
||||||
push: true
|
|
||||||
tags: ${{ steps.meta.outputs.tags }}
|
|
||||||
labels: ${{ steps.meta.outputs.labels }}
|
|
||||||
5
.gitignore
vendored
5
.gitignore
vendored
|
|
@ -2,7 +2,4 @@
|
||||||
/build/
|
/build/
|
||||||
.idea
|
.idea
|
||||||
.ddev
|
.ddev
|
||||||
config.json
|
config.json
|
||||||
config.prod.json
|
|
||||||
config.test.json
|
|
||||||
config.dev.json
|
|
||||||
16
Dockerfile
16
Dockerfile
|
|
@ -1,16 +0,0 @@
|
||||||
FROM node:latest
|
|
||||||
LABEL name="LS25-Discord-Bot"
|
|
||||||
LABEL authors="Dennis Heinrich"
|
|
||||||
|
|
||||||
# Copy the source files
|
|
||||||
WORKDIR /app
|
|
||||||
COPY . /app
|
|
||||||
RUN npm install pnpm -g
|
|
||||||
RUN pnpm install
|
|
||||||
RUN pnpm run build
|
|
||||||
|
|
||||||
## Simplyfy the rm commands
|
|
||||||
RUN rm -rf .ddev/ source/ misc/ .git .gitignore config.example-en.json Dockerfile docker-compose.yml README.md
|
|
||||||
|
|
||||||
CMD ["npm", "run", "start-only"]
|
|
||||||
ENTRYPOINT ["npm", "run", "start-only"]
|
|
||||||
14
LICENSE.md
14
LICENSE.md
|
|
@ -1,14 +0,0 @@
|
||||||
Copyright 2024 - Dennis Heinrich
|
|
||||||
|
|
||||||
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated
|
|
||||||
documentation files (the “Software”), to deal in the Software without restriction, including without limitation the
|
|
||||||
rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit
|
|
||||||
persons to whom the Software is furnished to do so, subject to the following conditions:
|
|
||||||
|
|
||||||
The above copyright notice and this permission notice shall be included in all copies or substantial portions of the
|
|
||||||
Software.
|
|
||||||
|
|
||||||
THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE
|
|
||||||
WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
|
||||||
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR
|
|
||||||
OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
||||||
117
README.md
117
README.md
|
|
@ -1,98 +1,27 @@
|
||||||
# Farming Simulator 25 - Discord Bot
|
# Farming Simulator 25 - Discord Bot
|
||||||
|
## Create a Discord bot
|
||||||
|
|
||||||
This bot periodically updates a Discord channel with stats from a Farming Simulator 25 server.
|
1. Open the [Discord Developer Portal](https://discord.com/developers/applications)
|
||||||
It posts the server name, password, time, and player count. Written in Node.js, it uses the
|
2. Click on `New Application`
|
||||||
discord.js library to interact with Discord and fetches server stats via the XML feed
|
3. Name your application
|
||||||
(accessible through the server's web interface). The update interval is configurable.
|
4. Click on `Bot` in the left menu
|
||||||
|
5. Click on `Copy` to copy the bot token
|
||||||
|
6. Click on `Installation` in the left menu
|
||||||
|
7. Add the Permission 'Administrator' to the bot guild installation (bottom of the page)
|
||||||
|
8. Click on `Copy` to copy the URL to install the bot to a guild
|
||||||
|
9. Your installation link url should look like this: `https://discord.com/oauth2/authorize?client_id=CLIENT_ID`
|
||||||
|
|
||||||
## Screenshots
|
## Install the bot
|
||||||
|
|
||||||
<details>
|
1. Clone the repository
|
||||||
<summary>Discord embed in english</summary>
|
2. Move the `config.example.json` to `config.json`
|
||||||
|
1. serverPassword: The password to the server
|
||||||

|
2. serverStatsUrl: The feed URL to the server stats (from the web interface from the server)
|
||||||
|
3. serverMapUrl: The feed URL to the server map (from the web interface from the server)
|
||||||
</details>
|
4. guildId: The guild id where the bot should be installed
|
||||||
|
5. channelId: The channel id where the bot should post the server stats
|
||||||
<details>
|
6. botToken: The bot token from the Discord Developer Portal
|
||||||
<summary>Discord embed in german</summary>
|
3. Add the bot token to the `config.json`
|
||||||
|
4. Add the prefix to the `config.json`
|
||||||

|
5. Run `npm install`
|
||||||
|
6. Run `npm start`
|
||||||
</details>
|
|
||||||
|
|
||||||
<details>
|
|
||||||
<summary>Terminal output (NodeJS)</summary>
|
|
||||||
|
|
||||||

|
|
||||||
|
|
||||||
</details>
|
|
||||||
|
|
||||||
## Requirements
|
|
||||||
|
|
||||||
- **Node.js**: Required if you want to run the bot without Docker.
|
|
||||||
- **NPM**: Required if you want to run the bot without Docker.
|
|
||||||
- **Docker (optional)**: Use Docker if you prefer running the bot in a containerized environment.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Installation Guide
|
|
||||||
|
|
||||||
### Step 1: Create a Discord Bot
|
|
||||||
|
|
||||||
1. Open the [Discord Developer Portal](https://discord.com/developers/applications).
|
|
||||||
2. Click on `New Application` and give your application a name.
|
|
||||||
3. Navigate to the `Bot` section in the left menu and click on `Add Bot`.
|
|
||||||
4. Copy the bot token by clicking `Copy` (you'll need this later).
|
|
||||||
5. Go to the `OAuth2` > `URL Generator` section in the left menu.
|
|
||||||
6. Under "Scopes," select `bot`, and under "Bot Permissions," select `Administrator`.
|
|
||||||
7. Copy the generated URL to invite the bot to your Discord server.
|
|
||||||
- The URL should look like this:
|
|
||||||
`https://discord.com/oauth2/authorize?client_id=CLIENT_ID&scope=bot&permissions=8`
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
### Step 2: Configure the Bot
|
|
||||||
|
|
||||||
1. Clone the repository to your server
|
|
||||||
2. Locate the configuration files:
|
|
||||||
- Use either
|
|
||||||
- `config.example-de.json` (for German)
|
|
||||||
- `config.example-en.json` (for English)
|
|
||||||
- Rename the chosen file to `config.json`.
|
|
||||||
3. Open `config.json` and fill in the required fields:
|
|
||||||
- Refer to `SETTINGS.md` for detailed descriptions of each field.
|
|
||||||
- Fields marked with `(*)` are important to check; other fields can be left empty for default values.
|
|
||||||
|
|
||||||
---
|
|
||||||
|
|
||||||
## Running the Bot
|
|
||||||
|
|
||||||
### Option 1: Run Inside a Docker Container (Recommended)
|
|
||||||
|
|
||||||
1. Navigate to the root directory of the cloned repository.
|
|
||||||
2. Build and start the container:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
docker compose up -d --build
|
|
||||||
```
|
|
||||||
|
|
||||||
3. The bot should now be running and posting server stats to the specified Discord channel.
|
|
||||||
|
|
||||||
### Option 2: Run Without Docker (Using Node.js)
|
|
||||||
|
|
||||||
1. Navigate to the root directory of the cloned repository.
|
|
||||||
2. Install dependencies:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm install
|
|
||||||
```
|
|
||||||
|
|
||||||
3. Start the bot:
|
|
||||||
|
|
||||||
```bash
|
|
||||||
npm start
|
|
||||||
```
|
|
||||||
|
|
||||||
4. The bot should now be running and posting server stats to the specified Discord channel.
|
|
||||||
- Note: Closing the terminal will stop the bot. Use a process manager like [PM2](https://pm2.io/) to keep it running.
|
|
||||||
|
|
|
||||||
36
SETTINGS.md
36
SETTINGS.md
|
|
@ -1,36 +0,0 @@
|
||||||
# Settings and configuration
|
|
||||||
|
|
||||||
These are the settings that can be configured in the `config.json` file. The file is located in the root directory of the project. All
|
|
||||||
fields marked with `(*)` are required to be checked, or leave empty for default values.
|
|
||||||
|
|
||||||
| **- Key -** | **- Description -** |
|
|
||||||
|----------------------------------------------|---------------------------------------------------------------------------|
|
|
||||||
| (*) application.serverPassword | The password to join the server (or leave empty) |
|
|
||||||
| (*) application.serverStatsUrl | The feed URL to the server stats (from the web interface from the server) |
|
|
||||||
| (*) application.serverMapUrl | The feed URL to the server map (from the web interface from the server) |
|
|
||||||
| (*) application.updateIntervalSeconds | The interval in seconds to update the server stats |
|
|
||||||
| (*) discord.channelId | The channel id where the bot should post the server stats |
|
|
||||||
| (*) discord.botToken | The bot token from the Discord Developer Portal |
|
|
||||||
| translation.discordEmbed.title | The title of the Discord embed |
|
|
||||||
| translation.discordEmbed.descriptionOnline | The description when the server is online |
|
|
||||||
| translation.discordEmbed.descriptionOffline | The description when the server is offline |
|
|
||||||
| translation.discordEmbed.descriptionUnknown | The description when the server status is unknown |
|
|
||||||
| translation.discordEmbed.titleServerName | The title of the server name |
|
|
||||||
| translation.discordEmbed.titleServerPassword | The title of the server password |
|
|
||||||
| translation.discordEmbed.titleServerTime | The title of the server time |
|
|
||||||
| translation.discordEmbed.titlePlayerCount | The title of the player count |
|
|
||||||
| translation.discordEmbed.noPlayersOnline | The message when no players are online |
|
|
||||||
| translation.discordEmbed.titleServerMap | The title of the server map |
|
|
||||||
| translation.discordEmbed.titleServerMods | The title of the server mods |
|
|
||||||
| translation.common.monthJanuary | The month January in the language of the server |
|
|
||||||
| translation.common.monthFebruary | The month February in the language of the server |
|
|
||||||
| translation.common.monthMarch | The month March in the language of the server |
|
|
||||||
| translation.common.monthApril | The month April in the language of the server |
|
|
||||||
| translation.common.monthMay | The month May in the language of the server |
|
|
||||||
| translation.common.monthJune | The month June in the language of the server |
|
|
||||||
| translation.common.monthJuly | The month July in the language of the server |
|
|
||||||
| translation.common.monthAugust | The month August in the language of the server |
|
|
||||||
| translation.common.monthSeptember | The month September in the language of the server |
|
|
||||||
| translation.common.monthOctober | The month October in the language of the server |
|
|
||||||
| translation.common.monthNovember | The month November in the language of the server |
|
|
||||||
| translation.common.monthDecember | The month December in the language of the server |
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
{
|
|
||||||
"application": {
|
|
||||||
"serverPassword": "TypeMyServerPasswordHere",
|
|
||||||
"serverStatsUrl": "http://127.0.0.1:8080/feed/dedicated-server-stats.xml",
|
|
||||||
"serverMapUrl": "http://127.0.0.1:8080/feed/dedicated-server-stats-map.jpg",
|
|
||||||
"updateIntervalSeconds": 30
|
|
||||||
},
|
|
||||||
"discord": {
|
|
||||||
"channelId": "DiscordChannelId_12345",
|
|
||||||
"botToken": "DiscordSecretBotToken_XYZ"
|
|
||||||
},
|
|
||||||
"translation": {
|
|
||||||
"discordEmbed": {
|
|
||||||
"title": "LS25 Server Status",
|
|
||||||
"descriptionOnline": "Der Server ist online",
|
|
||||||
"descriptionOffline": "Der Server ist offline",
|
|
||||||
"descriptionUnknown": "Serverdaten werden abgerufen",
|
|
||||||
"titleServerName": "Server-Name:",
|
|
||||||
"titleServerMap": "Server-Karte:",
|
|
||||||
"titleServerMods": "Server-Mods:",
|
|
||||||
"titleServerPassword": "Server-Passwort:",
|
|
||||||
"titleServerTime": "Server-Zeit:",
|
|
||||||
"titlePlayerCount": "Spieler online:",
|
|
||||||
"noPlayersOnline": "Keine Spieler online"
|
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"monthJanuary": "Januar",
|
|
||||||
"monthFebruary": "Februar",
|
|
||||||
"monthMarch": "März",
|
|
||||||
"monthApril": "April",
|
|
||||||
"monthMay": "Mai",
|
|
||||||
"monthJune": "Juni",
|
|
||||||
"monthJuly": "Juli",
|
|
||||||
"monthAugust": "August",
|
|
||||||
"monthSeptember": "September",
|
|
||||||
"monthOctober": "Oktober",
|
|
||||||
"monthNovember": "November",
|
|
||||||
"monthDecember": "Dezember"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
@ -1,11 +1,12 @@
|
||||||
{
|
{
|
||||||
"application": {
|
"application": {
|
||||||
"serverPassword": "TypeMyServerPasswordHere",
|
"serverPassword": "TypeMyServerPasswordHere",
|
||||||
"serverStatsUrl": "http://127.0.0.1:8080/feed/dedicated-server-stats.xml",
|
"serverStatsUrl": "http://1.1.1.1:8080/feed/dedicated-server-stats.xml",
|
||||||
"serverMapUrl": "http://127.0.0.1:8080/feed/dedicated-server-stats-map.jpg",
|
"serverMapUrl": "http://1.1.1.1:8080/feed/dedicated-server-stats-map.jpg",
|
||||||
"updateIntervalSeconds": 30
|
"updateIntervalSeconds": 30
|
||||||
},
|
},
|
||||||
"discord": {
|
"discord": {
|
||||||
|
"guildId": "DiscordServerId_12345",
|
||||||
"channelId": "DiscordChannelId_12345",
|
"channelId": "DiscordChannelId_12345",
|
||||||
"botToken": "DiscordSecretBotToken_XYZ"
|
"botToken": "DiscordSecretBotToken_XYZ"
|
||||||
},
|
},
|
||||||
|
|
@ -16,26 +17,10 @@
|
||||||
"descriptionOffline": "Server is offline",
|
"descriptionOffline": "Server is offline",
|
||||||
"descriptionUnknown": "Server status fetching",
|
"descriptionUnknown": "Server status fetching",
|
||||||
"titleServerName": "Server name",
|
"titleServerName": "Server name",
|
||||||
"titleServerMap": "Server map",
|
|
||||||
"titleServerMods": "Server mods",
|
|
||||||
"titleServerPassword": "Server password",
|
"titleServerPassword": "Server password",
|
||||||
"titleServerTime": "Server time",
|
"titleServerTime": "Server time",
|
||||||
"titlePlayerCount": "Players online",
|
"titlePlayerCount": "Players online",
|
||||||
"noPlayersOnline": "No players online"
|
"noPlayersOnline": "No players online"
|
||||||
},
|
|
||||||
"common": {
|
|
||||||
"monthJanuary": "January",
|
|
||||||
"monthFebruary": "February",
|
|
||||||
"monthMarch": "March",
|
|
||||||
"monthApril": "April",
|
|
||||||
"monthMay": "May",
|
|
||||||
"monthJune": "June",
|
|
||||||
"monthJuly": "July",
|
|
||||||
"monthAugust": "August",
|
|
||||||
"monthSeptember": "September",
|
|
||||||
"monthOctober": "October",
|
|
||||||
"monthNovember": "November",
|
|
||||||
"monthDecember": "December"
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -1,35 +0,0 @@
|
||||||
services:
|
|
||||||
ls25bot:
|
|
||||||
build:
|
|
||||||
context: .
|
|
||||||
dockerfile: Dockerfile
|
|
||||||
container_name: ls25bot
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- ./config.json:/app/config.json
|
|
||||||
|
|
||||||
restart:
|
|
||||||
image: docker:cli
|
|
||||||
restart: unless-stopped
|
|
||||||
container_name: ls25bot-restart
|
|
||||||
volumes:
|
|
||||||
- /var/run/docker.sock:/var/run/docker.sock
|
|
||||||
entrypoint: [ "/bin/sh","-c" ]
|
|
||||||
command:
|
|
||||||
- |
|
|
||||||
echo "Restarting ls25bot container is running"
|
|
||||||
while true; do
|
|
||||||
sleep 7200 # Each 2 hours
|
|
||||||
echo "Restarting ls25bot container at $(date)"
|
|
||||||
docker restart ls25bot
|
|
||||||
done
|
|
||||||
|
|
||||||
# This is used for development purposes only
|
|
||||||
webserver:
|
|
||||||
image: nginx:alpine
|
|
||||||
container_name: ls25bot-webserver
|
|
||||||
restart: always
|
|
||||||
volumes:
|
|
||||||
- ./misc/files:/usr/share/nginx/html
|
|
||||||
ports:
|
|
||||||
- "8080:80"
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 7.5 KiB |
|
|
@ -1,392 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
|
||||||
<Server game="Farming Simulator 25" version="1.2.1.0" name="Server Name" mapName="Riverbend Springs" dayTime="58676855" mapOverviewFilename="data/maps/mapUS/textures/ui/overview.png" mapSize="2048">
|
|
||||||
<Slots capacity="16" numUsed="2">
|
|
||||||
<Player isUsed="true" isAdmin="false" uptime="42">Player 1</Player>
|
|
||||||
<Player isUsed="true" isAdmin="false" uptime="18">Player 2</Player>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
<Player isUsed="false"/>
|
|
||||||
</Slots>
|
|
||||||
<Vehicles>
|
|
||||||
<Vehicle name="Grain Wagon" category="MISC" type="trainTrailer" x="-971.130737" y="50.121727" z="80.606186" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="Sugarbeet Wagon" category="MISC" type="trainTrailer" x="-989.009033" y="50.120846" z="78.294762" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="Woodchips Wagon" category="MISC" type="trainTrailer" x="-1010.926758" y="50.106392" z="74.596596" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="Timber Wagon" category="MISC" type="trainTimberTrailer" x="-1028.782593" y="50.225243" z="70.523880"/>
|
|
||||||
<Vehicle name="Flatbed Wagon" category="MISC" type="trainTimberTrailer" x="-1046.494263" y="50.120571" z="65.512520"/>
|
|
||||||
<Vehicle name="Universalschaufel" category="TELELOADERTOOLS" type="shovelLeveler" x="760.988770" y="51.871380" z="80.543571" fillTypes="UNKNOWN UNKNOWN" fillLevels="0.000 0.000"/>
|
|
||||||
<Vehicle name="Palettengabel" category="TELELOADERTOOLS" type="implementDynamicMountAttacher" x="-237.062439" y="84.713295" z="968.095764"/>
|
|
||||||
<Vehicle name="Palettengabel" category="TELELOADERTOOLS" type="implementDynamicMountAttacher" x="-690.269226" y="47.685276" z="147.608948"/>
|
|
||||||
<Vehicle name="Palettengabel" category="TELELOADERTOOLS" type="implementDynamicMountAttacher" x="761.061157" y="51.863247" z="77.164993"/>
|
|
||||||
<Vehicle name="Ballengabel" category="TELELOADERTOOLS" type="implementDynamicMountAttacher" x="-694.801941" y="47.019566" z="91.162010"/>
|
|
||||||
<Vehicle name="Ballengabel" category="TELELOADERTOOLS" type="implementDynamicMountAttacher" x="-125.073997" y="49.091980" z="-168.389847"/>
|
|
||||||
<Vehicle name="Flüssigdünger" category="IBC" type="pallet" x="-205.862976" y="84.000015" z="947.396973" fillTypes="LIQUIDFERTILIZER" fillLevels="500.000"/>
|
|
||||||
<Vehicle name="Flüssigdünger" category="IBC" type="pallet" x="-206.486053" y="83.987259" z="945.447021" fillTypes="LIQUIDFERTILIZER" fillLevels="800.000"/>
|
|
||||||
<Vehicle name="Flüssigdünger" category="IBC" type="pallet" x="-207.132965" y="83.999397" z="946.667053" fillTypes="LIQUIDFERTILIZER" fillLevels="800.000"/>
|
|
||||||
<Vehicle name="Flüssigdünger" category="IBC" type="pallet" x="-208.560638" y="84.000015" z="945.825012" fillTypes="LIQUIDFERTILIZER" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Herbizid" category="IBC" type="pallet" x="-208.065002" y="84.000015" z="947.856018" fillTypes="HERBICIDE" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Herbizid" category="IBC" type="pallet" x="-209.373993" y="84.000008" z="947.052002" fillTypes="HERBICIDE" fillLevels="11.777"/>
|
|
||||||
<Vehicle name="Herbizid" category="IBC" type="pallet" x="-205.047623" y="83.998566" z="946.285950" fillTypes="HERBICIDE" fillLevels="1475.996"/>
|
|
||||||
<Vehicle name="Herbizid" category="IBC" type="pallet" x="-106.252449" y="49.049614" z="-172.440796" fillTypes="HERBICIDE" fillLevels="800.000"/>
|
|
||||||
<Vehicle name="Herbizid" category="IBC" type="pallet" x="-208.320877" y="83.990028" z="944.404968" fillTypes="HERBICIDE" fillLevels="524.004"/>
|
|
||||||
<Vehicle name="Flüssigdünger" category="IBC" type="pallet" x="-194.134277" y="83.898079" z="952.736328" fillTypes="LIQUIDFERTILIZER" fillLevels="946.969"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGPALLETS" type="pallet" x="-192.668716" y="85.923225" z="976.920959" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGPALLETS" type="pallet" x="-190.923141" y="85.377815" z="977.820312" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGPALLETS" type="pallet" x="-191.846283" y="85.371216" z="977.169128" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGPALLETS" type="pallet" x="-190.220139" y="85.386665" z="978.911926" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGPALLETS" type="pallet" x="759.916992" y="51.863045" z="83.748985" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGS" type="bigBag" x="-211.205994" y="84.000046" z="949.507019" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGS" type="bigBag" x="-209.341873" y="84.000061" z="948.616028" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGS" type="bigBag" x="-210.800003" y="84.000053" z="948.799011" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGS" type="bigBag" x="-210.295990" y="84.000069" z="948.117004" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGS" type="bigBag" x="-210.182663" y="84.000053" z="949.968994" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGS" type="bigBag" x="-209.885681" y="84.000053" z="949.191040" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGS" type="bigBag" x="-210.850006" y="84.000053" z="951.586975" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGS" type="bigBag" x="-210.283005" y="84.000053" z="950.825989" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kalk" category="BIGBAGS" type="bigBag" x="-212.167007" y="84.000053" z="951.426025" fillTypes="LIME" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="K105" category="FERTILIZERSPREADERS" type="spreader" x="758.519043" y="51.899227" z="106.285095" fillTypes="LIME" fillLevels="12437.203"/>
|
|
||||||
<Vehicle name="K105" category="FERTILIZERSPREADERS" type="spreader" x="-268.388977" y="83.982605" z="951.856567" fillTypes="LIME" fillLevels="5041.400"/>
|
|
||||||
<Vehicle name="K105" category="FERTILIZERSPREADERS" type="spreader" x="417.696808" y="64.092598" z="747.238892" fillTypes="LIME" fillLevels="13137.535"/>
|
|
||||||
<Vehicle name="Diamant 8" category="CORNHEADERS" type="cutter" x="204.144485" y="82.387985" z="-862.125366"/>
|
|
||||||
<Vehicle name="VARIO 620" category="CUTTERS" type="cutter" x="-463.975281" y="42.988651" z="54.566219"/>
|
|
||||||
<Vehicle name="GMD 3123 F" category="MOWERS" type="mower" x="757.665894" y="51.889996" z="102.727875"/>
|
|
||||||
<Vehicle name="GMD 8730-FF" category="MOWERS" type="mower" x="755.899597" y="51.863472" z="102.264244"/>
|
|
||||||
<Vehicle name="ZA-TS 3200" category="FERTILIZERSPREADERS" type="spreader" x="236.073654" y="82.004219" z="-877.167603" fillTypes="FERTILIZER" fillLevels="20.797"/>
|
|
||||||
<Vehicle name="MES 400" category="LEVELER" type="leveler" x="770.543213" y="52.284325" z="142.988998" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="3300" category="WEIGHTS" type="implement" x="-218.726013" y="83.997444" z="939.007019"/>
|
|
||||||
<Vehicle name="ZA-TS 3200" category="FERTILIZERSPREADERS" type="spreader" x="758.178467" y="51.888840" z="96.217773" fillTypes="FERTILIZER" fillLevels="2472.178"/>
|
|
||||||
<Vehicle name="MEGA 1200L TANK" category="SPRAYERS" type="fillableImplement" x="-185.055756" y="83.999176" z="971.308533" fillTypes="HERBICIDE" fillLevels="1500.000"/>
|
|
||||||
<Vehicle name="FreeFlow 25FT" category="CUTTERS" type="cutter" x="357.445892" y="59.217705" z="733.281067"/>
|
|
||||||
<Vehicle name="K-Force 400" category="SUBSOILERS" type="cultivator" x="384.232025" y="62.436989" z="757.603638"/>
|
|
||||||
<Vehicle name="Z2-840 H" category="WINDROWERS" type="windrower" x="756.275879" y="51.796539" z="115.398666"/>
|
|
||||||
<Vehicle name="Smaragd 9/500K" category="CULTIVATORS" type="cultivator" x="233.496338" y="82.009163" z="-860.212769"/>
|
|
||||||
<Vehicle name="Smaragd 9/500K" category="CULTIVATORS" type="cultivator" x="-251.862915" y="84.565491" z="950.325073"/>
|
|
||||||
<Vehicle name="W 900" category="WEIGHTS" type="implement" x="187.412018" y="49.488464" z="-208.348999"/>
|
|
||||||
<Vehicle name="1500" category="WEIGHTS" type="implement" x="191.842041" y="82.503487" z="-861.731995"/>
|
|
||||||
<Vehicle name="FARO 4010 D" category="LOADERWAGONS" type="forageWagon" x="-191.415039" y="84.083069" z="977.770874" fillTypes="UNKNOWN UNKNOWN" fillLevels="0.000 0.000"/>
|
|
||||||
<Vehicle name="FARO 4010 D" category="LOADERWAGONS" type="forageWagon" x="756.613953" y="52.008003" z="112.133774" fillTypes="UNKNOWN UNKNOWN" fillLevels="0.000 0.000"/>
|
|
||||||
<Vehicle name="SF900" category="FORESTRYSTUMPCUTTERS" type="stumpCutter" x="-923.269714" y="70.052986" z="-413.140778"/>
|
|
||||||
<Vehicle name="EVION 450" category="HARVESTERS" type="combineDrivable" x="-460.419250" y="41.962540" z="51.374596" fillTypes="CANOLA DIESEL DEF" fillLevels="5100.195 385.966 61.999" isAIActive="false"/>
|
|
||||||
<Vehicle name="TDK 301 RA" category="TRAILERS" type="trailer" x="187.700317" y="82.080879" z="-873.882690" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="TDK 301 RA" category="TRAILERS" type="trailer" x="419.461578" y="64.500145" z="751.909058" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="TDK 301 RA" category="TRAILERS" type="trailer" x="-517.529053" y="42.047150" z="167.806396" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="DDK 2400" category="TRAILERS" type="trailer" x="-463.445679" y="41.965527" z="37.828789" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="ESPRO 6000 RC" category="SEEDERS" type="fertilizingSowingMachine" x="-667.434998" y="47.053734" z="186.036926" fillTypes="SEEDS FERTILIZER" fillLevels="1705.302 1787.253"/>
|
|
||||||
<Vehicle name="GL 420" category="POTATOPLANTING" type="sowingMachine" x="199.599594" y="81.999931" z="-847.455750" fillTypes="SEEDS" fillLevels="2617.964"/>
|
|
||||||
<Vehicle name="Evo 290" category="POTATOHARVESTING" type="attachableCombineCutterFruitPreparer" x="135.030014" y="79.953560" z="-945.641846" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="DPW 1800" category="BALELOADERS" type="dynamicMountAttacherTrailer" x="196.229202" y="82.338669" z="-883.670898" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="DPW 1800" category="BALELOADERS" type="dynamicMountAttacherTrailer" x="-249.332535" y="84.012260" z="967.386658" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="N20T" category="CUTTERTRAILERS" type="dynamicMountAttacherTrailer" x="-664.076294" y="47.053188" z="161.465607" fillTypes="" fillLevels=""/>
|
|
||||||
<Vehicle name="N40BX" category="CUTTERTRAILERS" type="dynamicMountAttacherTrailer" x="358.198456" y="58.615849" z="733.536316" fillTypes="" fillLevels=""/>
|
|
||||||
<Vehicle name="Siliermittel" category="PALLETSILAGE" type="pallet" x="759.026184" y="51.873234" z="89.536072" fillTypes="SILAGE_ADDITIVE" fillLevels="11.795"/>
|
|
||||||
<Vehicle name="Bindegarn für Quaderballen" category="PALLETS" type="pallet" x="-254.368011" y="84.001785" z="990.694946" fillTypes="BALE_TWINE" fillLevels="24.000"/>
|
|
||||||
<Vehicle name="Pappel" category="PALLETS" type="pallet" x="-932.681396" y="71.236343" z="-453.171143" fillTypes="POPLAR" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="777.390381" y="52.603931" z="76.583733" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="777.354980" y="52.078590" z="76.514160" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="773.235474" y="52.034748" z="75.641457" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="777.647827" y="52.088459" z="77.489037" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="777.663391" y="52.613644" z="77.558449" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="773.462891" y="52.038174" z="76.590698" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="775.335449" y="52.058525" z="75.954857" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="775.137756" y="52.584141" z="76.958046" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="774.959534" y="52.057175" z="76.871353" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="EFG S50" category="FORKLIFTS" type="teleHandler" x="992.576721" y="43.989136" z="660.256958" fillTypes="ELECTRICCHARGE" fillLevels="79.000" isAIActive="false"/>
|
|
||||||
<Vehicle name="EFG S50" category="FORKLIFTS" type="teleHandler" x="-948.045105" y="69.965645" z="-409.410889" fillTypes="ELECTRICCHARGE" fillLevels="80.000" isAIActive="false"/>
|
|
||||||
<Vehicle name="Palette Honig" category="PALLETS" type="pallet" x="536.638123" y="71.136955" z="-978.847168" fillTypes="HONEY" fillLevels="906.880"/>
|
|
||||||
<Vehicle name="700 Vario" category="TRACTORSM" type="tractor" x="58.334110" y="55.865597" z="-687.340271" controller="SteffenLogen" fillTypes="DIESEL DEF AIR" fillLevels="247.944 26.999 2408.150" isAIActive="false"/>
|
|
||||||
<Vehicle name="Cargo T740" category="TELELOADERVEHICLES" type="teleHandler" x="-232.851608" y="84.353584" z="968.112305" fillTypes="DIESEL DEF" fillLevels="97.993 16.000" isAIActive="false"/>
|
|
||||||
<Vehicle name="Cargo T740" category="TELELOADERVEHICLES" type="teleHandler" x="-692.180847" y="47.339668" z="151.438568" fillTypes="DIESEL DEF" fillLevels="136.998 16.000" isAIActive="false"/>
|
|
||||||
<Vehicle name="700 Vario" category="TRACTORSM" type="tractor" x="342.791046" y="55.572617" z="705.655029" fillTypes="DIESEL DEF AIR" fillLevels="229.939 48.000 3982.922" isAIActive="false"/>
|
|
||||||
<Vehicle name="UX 5201 Super" category="SPRAYERS" type="sprayer" x="190.356674" y="81.936928" z="-843.570068" fillTypes="LIQUIDFERTILIZER" fillLevels="731.289"/>
|
|
||||||
<Vehicle name="TRIUS" category="MISC" type="trailer" x="-942.672974" y="69.933426" z="-413.781219" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="TRIUS" category="MISC" type="trailer" x="-720.478027" y="46.981789" z="110.480255" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="GL 860 Compacta" category="POTATOPLANTING" type="sowingMachine" x="-271.019043" y="84.021828" z="955.941345" fillTypes="SEEDS" fillLevels="155.058"/>
|
|
||||||
<Vehicle name="MEGA 1200L" category="SPRAYERS" type="sprayer" x="-185.925247" y="83.978149" z="973.963623" fillTypes="HERBICIDE" fillLevels="82.790"/>
|
|
||||||
<Vehicle name="Big Body 750 S" category="TRAILERS" type="trailer" x="-195.231506" y="84.073761" z="982.215820" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="Big Body 750 S" category="TRAILERS" type="trailer" x="758.043518" y="51.987045" z="109.415199" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="Kodiaq" category="CARS" type="car" x="-942.870972" y="69.943642" z="-419.493317" fillTypes="DIESEL" fillLevels="59.000" isAIActive="false"/>
|
|
||||||
<Vehicle name="Kodiaq" category="CARS" type="car" x="-720.469971" y="46.992149" z="116.195923" fillTypes="DIESEL" fillLevels="54.000" isAIActive="false"/>
|
|
||||||
<Vehicle name="PL-75" category="FORESTRYPLANTERS" type="treePlanter" x="-934.131104" y="69.990326" z="-452.804596" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="MKS 8" category="BARRELS" type="waterTrailer" x="-705.032776" y="46.929935" z="102.047394" fillTypes="WATER" fillLevels="7743.055"/>
|
|
||||||
<Vehicle name="FH16 RUL-HKR" category="TRUCKS" type="woodTruck" x="234.059769" y="36.540813" z="462.418671" fillTypes="DIESEL DEF AIR" fillLevels="682.965 58.000 2104.266" isAIActive="false"/>
|
|
||||||
<Vehicle name="5275 C SL" category="HARVESTERS" type="combineDrivable" x="363.117859" y="59.896736" z="741.435242" fillTypes="UNKNOWN DIESEL DEF" fillLevels="0.000 128.849 73.625" isAIActive="false"/>
|
|
||||||
<Vehicle name="SERVO T 6000 P" category="PLOWS" type="plow" x="-268.572723" y="84.143150" z="967.085388"/>
|
|
||||||
<Vehicle name="LandRoller 591A" category="ROLLERS" type="roller" x="416.845093" y="64.637283" z="758.541748"/>
|
|
||||||
<Vehicle name="K 300-T + SKA 1-Z" category="FORESTRYWINCHES" type="yarderTower" x="-814.009521" y="49.975986" z="85.640182"/>
|
|
||||||
<Vehicle name="ROTOCARE V 12400" category="WEEDERS" type="weeder" x="758.474548" y="51.871929" z="92.413712"/>
|
|
||||||
<Vehicle name="EDK 650" category="TRAILERS" type="trailer" x="781.522156" y="52.070648" z="72.521919" fillTypes="" fillLevels=""/>
|
|
||||||
<Vehicle name="FST 990" category="MISC" type="fuelTrailer" x="379.196991" y="64.901825" z="819.680115" fillTypes="DIESEL" fillLevels="1609.242"/>
|
|
||||||
<Vehicle name="MF44.9CS-170-CVTRONIC" category="TELELOADERVEHICLES" type="teleHandler" x="764.809082" y="52.010761" z="88.962845" fillTypes="DIESEL DEF" fillLevels="47.302 17.000" isAIActive="false"/>
|
|
||||||
<Vehicle name="RUH327" category="WOODTRANSPORT" type="trailer" x="-935.379578" y="70.018623" z="-447.135071" fillTypes="" fillLevels=""/>
|
|
||||||
<Vehicle name="6C RVshift" category="TRACTORSS" type="tractor" x="-705.188904" y="47.007118" z="95.609016" fillTypes="DIESEL DEF AIR" fillLevels="121.997 12.000 2548.144" isAIActive="false"/>
|
|
||||||
<Vehicle name="XB 190" category="FRONTLOADERS" type="attachableFrontloader" x="-668.447876" y="47.376064" z="176.834259"/>
|
|
||||||
<Vehicle name="FH Electric" category="TRUCKS" type="tractor" x="348.781952" y="41.593105" z="546.017212" fillTypes="ELECTRICCHARGE UNKNOWN UNKNOWN" fillLevels="332.995 0.000 0.000" isAIActive="false"/>
|
|
||||||
<Vehicle name="SKS 30/1050" category="TRAILERSSEMI" type="trailer" x="345.182404" y="42.188553" z="549.149475" fillTypes="WOODCHIPS" fillLevels="12686.328"/>
|
|
||||||
<Vehicle name="SKS 30/1050" category="TRAILERSSEMI" type="trailer" x="-307.416321" y="84.295639" z="958.224854" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="Palettengabel" category="FRONTLOADERTOOLS" type="implementDynamicMountAttacher" x="-669.027344" y="48.478512" z="174.558395"/>
|
|
||||||
<Vehicle name="Dolly 10 L" category="MISC" type="dolly" x="-302.057526" y="83.882385" z="957.659180"/>
|
|
||||||
<Vehicle name="Saatgut" category="PALLETS" type="pallet" x="-107.468040" y="49.021782" z="-171.858093" fillTypes="SEEDS" fillLevels="780.000"/>
|
|
||||||
<Vehicle name="Saatgut" category="PALLETS" type="pallet" x="-113.447838" y="49.037056" z="-172.342102" fillTypes="SEEDS" fillLevels="43.590"/>
|
|
||||||
<Vehicle name="MF 7S" category="TRACTORSM" type="tractor" x="-469.130402" y="41.905167" z="43.002506" fillTypes="DIESEL DEF AIR" fillLevels="273.993 28.000 2630.636" isAIActive="false"/>
|
|
||||||
<Vehicle name="Ultima 800" category="SEEDERS" type="sowingMachine" x="417.248047" y="63.875179" z="743.427368" fillTypes="SEEDS" fillLevels="1710.147"/>
|
|
||||||
<Vehicle name="Poltergabel" category="TELELOADERTOOLS" type="logGrab" x="-275.233582" y="85.133904" z="946.783691"/>
|
|
||||||
<Vehicle name="550" category="BARRELS" type="waterTrailer" x="339.447113" y="55.234520" z="703.213562" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="Palette Rapsöl" category="PALLETS" type="pallet" x="83.766335" y="79.978432" z="-923.739929" fillTypes="CANOLA_OIL" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Rapsöl" category="PALLETS" type="pallet" x="84.366188" y="79.978439" z="-924.319824" fillTypes="CANOLA_OIL" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Holzbalken" category="PALLETS" type="pallet" x="-198.347656" y="83.935143" z="951.060242" fillTypes="WOODBEAM" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="HM 10-500 KF" category="WOODCHIPPERS" type="woodCrusherTrailer" x="-796.659485" y="50.087917" z="90.516869" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="Absolut CVT" category="TRACTORSM" type="tractor" x="-667.909485" y="46.933910" z="178.958572" fillTypes="DIESEL DEF AIR" fillLevels="169.942 43.000 2396.290" isAIActive="false"/>
|
|
||||||
<Vehicle name="M8 SERIE" category="TRACTORSM" type="tractor" x="188.730301" y="82.029350" z="-861.590637" fillTypes="DIESEL DEF AIR" fillLevels="149.948 22.000 2948.671" isAIActive="false"/>
|
|
||||||
<Vehicle name="1100" category="WEIGHTS" type="implement" x="214.235672" y="82.040054" z="-851.836304"/>
|
|
||||||
<Vehicle name="Palette Bretter" category="PALLETS" type="pallet" x="-200.174118" y="83.952919" z="950.152893" fillTypes="BOARDS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="KEILER 2 RK22" category="POTATOHARVESTING" type="attachableCombineCutterFruitPreparer" x="-267.665405" y="83.991890" z="970.236328" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="HR 6040 RCS + BTFR 6030" category="SEEDERS" type="sowingMachine" x="-267.998199" y="83.844788" z="962.390686" fillTypes="UNKNOWN" fillLevels="0.000"/>
|
|
||||||
<Vehicle name="Palette Bretter" category="PALLETS" type="pallet" x="-201.677094" y="83.944481" z="948.462097" fillTypes="PLANKS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="TF 1512" category="SEEDTANKS" type="fillableImplement" x="-249.001404" y="83.982574" z="954.238647" fillTypes="SEEDS" fillLevels="1097.064"/>
|
|
||||||
<Vehicle name="FORTERRA HSX" category="TRACTORSS" type="tractor" x="-926.396912" y="70.286125" z="-411.164551" fillTypes="DIESEL DEF AIR" fillLevels="239.997 28.000 1501.860" isAIActive="false"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="775.354919" y="52.583443" z="75.985947" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Honig" category="PALLETS" type="pallet" x="-705.803345" y="47.001793" z="58.047688" fillTypes="HONEY" fillLevels="265.415"/>
|
|
||||||
<Vehicle name="P8 - 890" category="TEDDERS" type="tedder" x="756.728210" y="51.776264" z="98.848053"/>
|
|
||||||
<Vehicle name="AgroStar 8.31" category="TRACTORSM" type="tractor" x="765.268311" y="52.214668" z="94.208778" fillTypes="DIESEL AIR" fillLevels="231.976 2442.745" isAIActive="false"/>
|
|
||||||
<Vehicle name="Palette Holzbalken" category="PALLETS" type="pallet" x="-198.888977" y="83.975357" z="951.783142" fillTypes="WOODBEAM" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="772.915466" y="51.962883" z="61.307163" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="770.969849" y="51.962883" z="60.844006" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="ROTOCARE V 12400" category="WEEDERS" type="weeder" x="-271.498230" y="84.000282" z="961.081726"/>
|
|
||||||
<Vehicle name="Rexius 1230" category="ROLLERS" type="roller" x="-117.761330" y="49.772636" z="-156.103485"/>
|
|
||||||
<Vehicle name="Palette Kartoffelchips" category="PALLETS" type="pallet" x="79.129478" y="79.978462" z="-926.559448" fillTypes="POTATOCHIPS" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Optima RS" category="PLANTERS" type="fertilizingSowingMachine" x="-196.960953" y="84.273201" z="958.050598" fillTypes="SEEDS FERTILIZER" fillLevels="32.916 907.153"/>
|
|
||||||
<Vehicle name="Palette Bretter" category="PALLETS" type="pallet" x="-202.220764" y="83.979263" z="949.280518" fillTypes="PLANKS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Sonnenblumenöl" category="PALLETS" type="pallet" x="981.150024" y="44.001793" z="663.000000" fillTypes="SUNFLOWER_OIL" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Kartoffelsuppe" category="PALLETS" type="pallet" x="70.849998" y="80.001801" z="-976.750000" fillTypes="SOUPCANSPOTATO" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="QUADRANT 5300 FC" category="BALERSSQUARE" type="baler" x="-215.550659" y="84.016617" z="945.218018" fillTypes="STRAW BALE_TWINE" fillLevels="7277.793 18.000"/>
|
|
||||||
<Vehicle name="700 Vario" category="TRACTORSM" type="tractor" x="-252.657822" y="83.930290" z="946.192810" fillTypes="DIESEL DEF AIR" fillLevels="143.934 34.000 2698.759" isAIActive="false"/>
|
|
||||||
<Vehicle name="Palette Kartoffelchips" category="PALLETS" type="pallet" x="79.132271" y="79.978462" z="-928.559448" fillTypes="POTATOCHIPS" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kartoffelsuppe" category="PALLETS" type="pallet" x="68.850006" y="80.001808" z="-976.750000" fillTypes="SOUPCANSPOTATO" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Palette Rapsöl" category="PALLETS" type="pallet" x="983.150024" y="44.001793" z="663.000000" fillTypes="CANOLA_OIL" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Saatgut" category="BIGBAGPALLETS" type="pallet" x="759.236206" y="51.864830" z="86.885429" fillTypes="SEEDS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Saatgut" category="BIGBAGPALLETS" type="pallet" x="759.353882" y="52.920322" z="86.757286" fillTypes="SEEDS" fillLevels="246.009"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="769.024170" y="51.962883" z="60.380848" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Sonnenblumenöl" category="PALLETS" type="pallet" x="985.150024" y="44.001793" z="663.000000" fillTypes="SUNFLOWER_OIL" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Flüssigdünger" category="IBC" type="pallet" x="-271.140350" y="84.000008" z="947.690369" fillTypes="LIQUIDFERTILIZER" fillLevels="335.995"/>
|
|
||||||
<Vehicle name="Kartoffelsuppe" category="PALLETS" type="pallet" x="66.850006" y="80.001808" z="-976.750000" fillTypes="SOUPCANSPOTATO" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Befüllbare Palette" category="PALLETS" type="pallet" x="282.466156" y="42.038940" z="539.785034" fillTypes="WOODCHIPS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Kartoffelchips" category="PALLETS" type="pallet" x="79.135048" y="79.980667" z="-930.559509" fillTypes="POTATOCHIPS" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kartoffelsuppe" category="PALLETS" type="pallet" x="64.850006" y="80.001808" z="-976.750000" fillTypes="SOUPCANSPOTATO" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Befüllbare Palette" category="PALLETS" type="pallet" x="283.881195" y="42.039711" z="538.371094" fillTypes="WOODCHIPS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Rapsöl" category="PALLETS" type="pallet" x="987.150024" y="44.001793" z="663.000000" fillTypes="CANOLA_OIL" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="KDF 341 S" category="MOWERS" type="mower" x="57.709156" y="56.001034" z="-683.861389"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="773.314148" y="51.962879" z="59.632465" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Befüllbare Palette" category="PALLETS" type="pallet" x="285.295471" y="42.040482" z="536.956970" fillTypes="WOODCHIPS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Saatgut" category="PALLETS" type="pallet" x="-103.440109" y="48.992226" z="-159.229095" fillTypes="SEEDS" fillLevels="390.000"/>
|
|
||||||
<Vehicle name="Palette Sonnenblumenöl" category="PALLETS" type="pallet" x="989.150024" y="44.001793" z="663.000000" fillTypes="SUNFLOWER_OIL" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Kartoffelchips" category="PALLETS" type="pallet" x="79.137840" y="79.988884" z="-932.559631" fillTypes="POTATOCHIPS" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Kartoffelsuppe" category="PALLETS" type="pallet" x="62.850010" y="80.001808" z="-976.750000" fillTypes="SOUPCANSPOTATO" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Befüllbare Palette" category="PALLETS" type="pallet" x="286.709625" y="42.041256" z="535.542786" fillTypes="WOODCHIPS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="-717.437500" y="47.001793" z="160.103363" fillTypes="EGG" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="-717.437500" y="47.001797" z="162.103348" fillTypes="EGG" fillLevels="762.917"/>
|
|
||||||
<Vehicle name="Kartoffelsuppe" category="PALLETS" type="pallet" x="70.850014" y="80.001801" z="-979.250000" fillTypes="SOUPCANSPOTATO" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Befüllbare Palette" category="PALLETS" type="pallet" x="288.123871" y="42.042030" z="534.128601" fillTypes="WOODCHIPS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Kartoffelchips" category="PALLETS" type="pallet" x="79.140648" y="79.996536" z="-934.559387" fillTypes="POTATOCHIPS" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Palette Rapsöl" category="PALLETS" type="pallet" x="981.150024" y="44.001797" z="661.500000" fillTypes="CANOLA_OIL" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Herbizid" category="IBC" type="pallet" x="212.637787" y="82.000000" z="-870.321167" fillTypes="HERBICIDE" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Herbizid" category="IBC" type="pallet" x="214.410812" y="82.000008" z="-870.849304" fillTypes="HERBICIDE" fillLevels="407.996"/>
|
|
||||||
<Vehicle name="Befüllbare Palette" category="PALLETS" type="pallet" x="289.538025" y="42.042797" z="532.714355" fillTypes="WOODCHIPS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Sonnenblumenöl" category="PALLETS" type="pallet" x="983.150024" y="44.001793" z="661.500000" fillTypes="SUNFLOWER_OIL" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette Ziegenmilch" category="PALLETS" type="pallet" x="794.353210" y="51.958988" z="54.491245" fillTypes="GOATMILK" fillLevels="400.000"/>
|
|
||||||
<Vehicle name="Befüllbare Palette" category="PALLETS" type="pallet" x="290.952271" y="42.043571" z="531.300171" fillTypes="WOODCHIPS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Eier" category="PALLETS" type="pallet" x="771.368591" y="51.963249" z="59.169300" fillTypes="EGG" fillLevels="203.190"/>
|
|
||||||
<Vehicle name="Palette Kartoffelchips" category="PALLETS" type="pallet" x="81.129471" y="79.978462" z="-926.556702" fillTypes="POTATOCHIPS" fillLevels="2000.000"/>
|
|
||||||
<Vehicle name="Befüllbare Palette" category="PALLETS" type="pallet" x="292.366547" y="42.044426" z="529.885803" fillTypes="WOODCHIPS" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="Palette mit Ziegenkäse" category="PALLETS" type="pallet" x="762.037781" y="51.986229" z="132.339935" fillTypes="GOATCHEESE" fillLevels="1000.000"/>
|
|
||||||
<Vehicle name="700 Vario" category="TRACTORSM" type="tractor" x="-113.500099" y="48.921379" z="-158.317825" controller="Robbie" fillTypes="DIESEL DEF AIR" fillLevels="450.000 48.000 4000.000" isAIActive="false"/>
|
|
||||||
<Vehicle name="SERVO T 6000 P" category="PLOWS" type="plow" x="-107.928978" y="48.994789" z="-158.102753"/>
|
|
||||||
<Vehicle name="1100" category="WEIGHTS" type="implement" x="-99.349998" y="49.032288" z="-158.080139"/>
|
|
||||||
</Vehicles>
|
|
||||||
<Mods>
|
|
||||||
<Mod name="pdlc_macDonPack" author="GIANTS Software" version="1.1.0.0" hash="a910fbe59bd919187cacbfc7b63ec5a6">MacDon Pack</Mod>
|
|
||||||
</Mods>
|
|
||||||
<Farmlands>
|
|
||||||
<Farmland name="1" id="1" owner="6" area="180528" x="-687.160889" z="102.226006"/>
|
|
||||||
<Farmland name="2" id="2" owner="0" area="167760" x="-913.702454" z="202.690994"/>
|
|
||||||
<Farmland name="3" id="3" owner="6" area="107760" x="-783.200867" z="251.655685"/>
|
|
||||||
<Farmland name="4" id="4" owner="6" area="59568" x="-697.605957" z="253.983887"/>
|
|
||||||
<Farmland name="5" id="5" owner="6" area="102264" x="-629.161438" z="281.216370"/>
|
|
||||||
<Farmland name="6" id="6" owner="0" area="225696" x="-495.164825" z="253.142487"/>
|
|
||||||
<Farmland name="7" id="7" owner="6" area="185784" x="-450.340668" z="100.460793"/>
|
|
||||||
<Farmland name="8" id="8" owner="0" area="197736" x="-554.557251" z="-40.148682"/>
|
|
||||||
<Farmland name="9" id="9" owner="0" area="119280" x="-392.175049" z="-40.127968"/>
|
|
||||||
<Farmland name="10" id="10" owner="0" area="106776" x="-390.032135" z="-156.696106"/>
|
|
||||||
<Farmland name="11" id="11" owner="0" area="206328" x="-427.714661" z="-295.589966"/>
|
|
||||||
<Farmland name="12" id="12" owner="0" area="117096" x="-435.564880" z="-459.468140"/>
|
|
||||||
<Farmland name="13" id="13" owner="0" area="105816" x="-558.001160" z="-479.994324"/>
|
|
||||||
<Farmland name="14" id="14" owner="0" area="48960" x="-583.367676" z="-379.408813"/>
|
|
||||||
<Farmland name="15" id="15" owner="0" area="143376" x="-581.700378" z="-252.354538"/>
|
|
||||||
<Farmland name="16" id="16" owner="0" area="170976" x="-719.682739" z="-288.660034"/>
|
|
||||||
<Farmland name="17" id="17" owner="0" area="81600" x="-843.171753" z="-402.491760"/>
|
|
||||||
<Farmland name="18" id="18" owner="4" area="111792" x="-943.295837" z="-459.044647"/>
|
|
||||||
<Farmland name="19" id="19" owner="0" area="237792" x="-932.201233" z="-869.842163"/>
|
|
||||||
<Farmland name="20" id="20" owner="0" area="233520" x="-808.343262" z="-841.220581"/>
|
|
||||||
<Farmland name="21" id="21" owner="0" area="175776" x="-857.341064" z="-593.457703"/>
|
|
||||||
<Farmland name="22" id="22" owner="0" area="203832" x="-644.699524" z="-590.680420"/>
|
|
||||||
<Farmland name="23" id="23" owner="0" area="166824" x="-675.898315" z="-748.647522"/>
|
|
||||||
<Farmland name="24" id="24" owner="0" area="574128" x="-506.154175" z="-904.860718"/>
|
|
||||||
<Farmland name="25" id="25" owner="0" area="214320" x="-444.518463" z="-729.921387"/>
|
|
||||||
<Farmland name="26" id="26" owner="0" area="142752" x="-365.425354" z="-531.045044"/>
|
|
||||||
<Farmland name="27" id="27" owner="0" area="119760" x="-300.576355" z="-585.901428"/>
|
|
||||||
<Farmland name="28" id="28" owner="0" area="72000" x="-168.688660" z="-625.633972"/>
|
|
||||||
<Farmland name="29" id="29" owner="0" area="52848" x="-159.302460" z="-687.731140"/>
|
|
||||||
<Farmland name="30" id="30" owner="0" area="126696" x="-113.132599" z="-749.662598"/>
|
|
||||||
<Farmland name="31" id="31" owner="0" area="238560" x="-141.931183" z="-856.079651"/>
|
|
||||||
<Farmland name="32" id="32" owner="2" area="133176" x="-84.475220" z="-952.138245"/>
|
|
||||||
<Farmland name="33" id="33" owner="2" area="367272" x="167.347778" z="-893.992615"/>
|
|
||||||
<Farmland name="34" id="34" owner="0" area="25224" x="63.359657" z="-747.970520"/>
|
|
||||||
<Farmland name="35" id="35" owner="0" area="64632" x="160.136276" z="-741.432983"/>
|
|
||||||
<Farmland name="36" id="36" owner="1" area="118080" x="422.000000" z="-821.000000"/>
|
|
||||||
<Farmland name="37" id="37" owner="2" area="207360" x="422.000000" z="-934.000000"/>
|
|
||||||
<Farmland name="38" id="38" owner="1" area="328104" x="635.000000" z="-859.000000"/>
|
|
||||||
<Farmland name="39" id="39" owner="0" area="327264" x="910.735535" z="-867.448853"/>
|
|
||||||
<Farmland name="40" id="40" owner="0" area="162480" x="740.536194" z="-644.000305"/>
|
|
||||||
<Farmland name="41" id="41" owner="0" area="72576" x="612.000000" z="-628.000000"/>
|
|
||||||
<Farmland name="42" id="42" owner="0" area="179616" x="481.821747" z="-625.162476"/>
|
|
||||||
<Farmland name="43" id="43" owner="2" area="71016" x="265.915863" z="-627.181152"/>
|
|
||||||
<Farmland name="44" id="44" owner="0" area="87576" x="136.371887" z="-684.632202"/>
|
|
||||||
<Farmland name="45" id="45" owner="0" area="203808" x="82.635185" z="-591.193604"/>
|
|
||||||
<Farmland name="46" id="46" owner="0" area="164712" x="316.338196" z="-531.673462"/>
|
|
||||||
<Farmland name="47" id="47" owner="0" area="101448" x="322.874603" z="-403.535126"/>
|
|
||||||
<Farmland name="48" id="48" owner="0" area="124224" x="454.989960" z="-414.518158"/>
|
|
||||||
<Farmland name="49" id="49" owner="0" area="67944" x="536.395264" z="-479.196411"/>
|
|
||||||
<Farmland name="50" id="50" owner="0" area="188520" x="634.870911" z="-412.406494"/>
|
|
||||||
<Farmland name="51" id="51" owner="0" area="202104" x="879.699463" z="-517.842407"/>
|
|
||||||
<Farmland name="52" id="52" owner="0" area="125112" x="844.739868" z="-380.420685"/>
|
|
||||||
<Farmland name="53" id="53" owner="0" area="249528" x="941.796387" z="-257.083679"/>
|
|
||||||
<Farmland name="54" id="54" owner="0" area="154872" x="906.832031" z="-65.346504"/>
|
|
||||||
<Farmland name="55" id="55" owner="0" area="306024" x="582.822754" z="-224.962357"/>
|
|
||||||
<Farmland name="56" id="56" owner="0" area="115656" x="360.043365" z="-289.604675"/>
|
|
||||||
<Farmland name="57" id="57" owner="0" area="83832" x="435.036652" z="-126.435440"/>
|
|
||||||
<Farmland name="58" id="58" owner="3" area="52176" x="540.928223" z="-104.039558"/>
|
|
||||||
<Farmland name="59" id="59" owner="0" area="127128" x="637.151794" z="19.810270"/>
|
|
||||||
<Farmland name="60" id="60" owner="3" area="127224" x="532.877747" z="33.754574"/>
|
|
||||||
<Farmland name="61" id="61" owner="0" area="214584" x="430.449738" z="209.333969"/>
|
|
||||||
<Farmland name="62" id="62" owner="0" area="85152" x="553.062561" z="178.526489"/>
|
|
||||||
<Farmland name="63" id="63" owner="0" area="42144" x="505.537598" z="342.198181"/>
|
|
||||||
<Farmland name="64" id="64" owner="0" area="157680" x="659.655396" z="271.645966"/>
|
|
||||||
<Farmland name="65" id="65" owner="3" area="307824" x="819.230286" z="69.357552"/>
|
|
||||||
<Farmland name="66" id="66" owner="0" area="370368" x="881.886963" z="262.181305"/>
|
|
||||||
<Farmland name="67" id="67" owner="0" area="44664" x="717.584656" z="407.578186"/>
|
|
||||||
<Farmland name="68" id="68" owner="0" area="69096" x="560.953430" z="563.435547"/>
|
|
||||||
<Farmland name="69" id="69" owner="0" area="194064" x="411.850098" z="628.641602"/>
|
|
||||||
<Farmland name="70" id="70" owner="0" area="83016" x="577.733154" z="677.875427"/>
|
|
||||||
<Farmland name="71" id="71" owner="0" area="70080" x="675.161621" z="680.793823"/>
|
|
||||||
<Farmland name="72" id="72" owner="7" area="71088" x="786.002686" z="677.866333"/>
|
|
||||||
<Farmland name="73" id="73" owner="0" area="91464" x="937.431885" z="782.949097"/>
|
|
||||||
<Farmland name="74" id="74" owner="0" area="117504" x="815.837402" z="936.251648"/>
|
|
||||||
<Farmland name="75" id="75" owner="0" area="106704" x="649.019348" z="954.789490"/>
|
|
||||||
<Farmland name="76" id="76" owner="7" area="508464" x="598.152527" z="798.569885"/>
|
|
||||||
<Farmland name="77" id="77" owner="0" area="410160" x="227.551193" z="769.198242"/>
|
|
||||||
<Farmland name="78" id="78" owner="0" area="242616" x="1.865565" z="731.886963"/>
|
|
||||||
<Farmland name="79" id="79" owner="0" area="135840" x="118.326859" z="566.906372"/>
|
|
||||||
<Farmland name="80" id="80" owner="0" area="370416" x="24.263056" z="370.753906"/>
|
|
||||||
<Farmland name="81" id="81" owner="0" area="129840" x="-47.316822" z="180.941589"/>
|
|
||||||
<Farmland name="82" id="82" owner="1" area="86016" x="205.930252" z="-144.194748"/>
|
|
||||||
<Farmland name="83" id="83" owner="0" area="121104" x="146.708282" z="-269.483551"/>
|
|
||||||
<Farmland name="84" id="84" owner="0" area="225552" x="-70.756119" z="-379.190033"/>
|
|
||||||
<Farmland name="85" id="85" owner="0" area="194712" x="-181.156540" z="268.748810"/>
|
|
||||||
<Farmland name="86" id="86" owner="0" area="664128" x="-214.723190" z="537.485779"/>
|
|
||||||
<Farmland name="87" id="87" owner="0" area="266904" x="-197.747055" z="790.536194"/>
|
|
||||||
<Farmland name="88" id="88" owner="0" area="423528" x="-462.610931" z="789.477905"/>
|
|
||||||
<Farmland name="89" id="89" owner="5" area="337464" x="-395.426300" z="948.027954"/>
|
|
||||||
<Farmland name="90" id="90" owner="0" area="218544" x="-820.224915" z="947.860291"/>
|
|
||||||
<Farmland name="91" id="91" owner="0" area="588576" x="-700.178833" z="706.327087"/>
|
|
||||||
<Farmland name="92" id="92" owner="0" area="237072" x="-884.060913" z="578.941711"/>
|
|
||||||
<Farmland name="93" id="93" owner="0" area="480067" x="786.217346" z="-862.750854"/>
|
|
||||||
</Farmlands>
|
|
||||||
<Fields>
|
|
||||||
<Field id="19" x="-924.500000" z="-869.750000" isOwned="false"/>
|
|
||||||
<Field id="20" x="-808.437500" z="-832.271484" isOwned="false"/>
|
|
||||||
<Field id="23" x="-679.085938" z="-734.348083" isOwned="false"/>
|
|
||||||
<Field id="22" x="-678.737305" z="-590.278320" isOwned="false"/>
|
|
||||||
<Field id="24" x="-419.882202" z="-889.489014" isOwned="false"/>
|
|
||||||
<Field id="25" x="-452.750000" z="-730.000000" isOwned="false"/>
|
|
||||||
<Field id="31" x="-200.710114" z="-850.949341" isOwned="false"/>
|
|
||||||
<Field id="30" x="-71.459412" z="-746.243774" isOwned="false"/>
|
|
||||||
<Field id="29" x="-106.500000" z="-687.000000" isOwned="false"/>
|
|
||||||
<Field id="28" x="-165.941422" z="-632.424072" isOwned="false"/>
|
|
||||||
<Field id="27" x="-251.643692" z="-523.704529" isOwned="false"/>
|
|
||||||
<Field id="26" x="-308.903503" z="-476.918213" isOwned="false"/>
|
|
||||||
<Field id="12" x="-422.826477" z="-446.930573" isOwned="false"/>
|
|
||||||
<Field id="11" x="-440.006134" z="-290.573517" isOwned="false"/>
|
|
||||||
<Field id="84" x="-66.756210" z="-378.796295" isOwned="false"/>
|
|
||||||
<Field id="45" x="106.102158" z="-605.182800" isOwned="false"/>
|
|
||||||
<Field id="44" x="197.026321" z="-686.662903" isOwned="false"/>
|
|
||||||
<Field id="34" x="63.461937" z="-733.196289" isOwned="false"/>
|
|
||||||
<Field id="35" x="117.275040" z="-731.324463" isOwned="false"/>
|
|
||||||
<Field id="43" x="272.906006" z="-625.500000" isOwned="true"/>
|
|
||||||
<Field id="46" x="318.800903" z="-558.999817" isOwned="false"/>
|
|
||||||
<Field id="36" x="423.900024" z="-817.275024" isOwned="true"/>
|
|
||||||
<Field id="37" x="424.125000" z="-916.687500" isOwned="true"/>
|
|
||||||
<Field id="38" x="637.750000" z="-844.750000" isOwned="true"/>
|
|
||||||
<Field id="41" x="613.650024" z="-624.587524" isOwned="false"/>
|
|
||||||
<Field id="50" x="632.565613" z="-488.084351" isOwned="false"/>
|
|
||||||
<Field id="40" x="710.536072" z="-645.788940" isOwned="false"/>
|
|
||||||
<Field id="51" x="909.256287" z="-505.635132" isOwned="false"/>
|
|
||||||
<Field id="2" x="-917.273987" z="183.261292" isOwned="false"/>
|
|
||||||
<Field id="3" x="-772.997986" z="234.500000" isOwned="true"/>
|
|
||||||
<Field id="4" x="-697.000000" z="234.500000" isOwned="true"/>
|
|
||||||
<Field id="5" x="-628.860901" z="211.139114" isOwned="true"/>
|
|
||||||
<Field id="8" x="-549.823425" z="-20.338507" isOwned="false"/>
|
|
||||||
<Field id="10" x="-379.324158" z="-154.026367" isOwned="false"/>
|
|
||||||
<Field id="9" x="-391.939209" z="-11.890892" isOwned="false"/>
|
|
||||||
<Field id="15" x="-563.343811" z="-213.911987" isOwned="false"/>
|
|
||||||
<Field id="7" x="-429.020020" z="99.580505" isOwned="true"/>
|
|
||||||
<Field id="6" x="-465.831329" z="230.273621" isOwned="false"/>
|
|
||||||
<Field id="83" x="114.987961" z="-266.434998" isOwned="false"/>
|
|
||||||
<Field id="82" x="192.963440" z="-143.000000" isOwned="true"/>
|
|
||||||
<Field id="56" x="388.227936" z="-273.264038" isOwned="false"/>
|
|
||||||
<Field id="57" x="448.806976" z="-129.595200" isOwned="false"/>
|
|
||||||
<Field id="58" x="531.031738" z="-105.356049" isOwned="true"/>
|
|
||||||
<Field id="55" x="644.359985" z="-139.364532" isOwned="false"/>
|
|
||||||
<Field id="60" x="534.640015" z="33.000000" isOwned="true"/>
|
|
||||||
<Field id="59" x="635.421448" z="25.120499" isOwned="false"/>
|
|
||||||
<Field id="65" x="849.445496" z="76.520958" isOwned="true"/>
|
|
||||||
<Field id="62" x="534.639832" z="184.903091" isOwned="false"/>
|
|
||||||
<Field id="64" x="666.542847" z="289.177155" isOwned="false"/>
|
|
||||||
<Field id="61" x="440.700775" z="234.819427" isOwned="false"/>
|
|
||||||
<Field id="81" x="-39.984829" z="181.853943" isOwned="false"/>
|
|
||||||
<Field id="85" x="-163.209641" z="285.391357" isOwned="false"/>
|
|
||||||
<Field id="90" x="-812.500000" z="950.039978" isOwned="false"/>
|
|
||||||
<Field id="91" x="-709.718689" z="700.995789" isOwned="false"/>
|
|
||||||
<Field id="89" x="-514.377014" z="951.797485" isOwned="true"/>
|
|
||||||
<Field id="88" x="-412.871033" z="801.601257" isOwned="false"/>
|
|
||||||
<Field id="86" x="-259.533997" z="561.369507" isOwned="false"/>
|
|
||||||
<Field id="87" x="-177.900604" z="803.081787" isOwned="false"/>
|
|
||||||
<Field id="78" x="16.056406" z="702.664124" isOwned="false"/>
|
|
||||||
<Field id="79" x="118.893562" z="570.743530" isOwned="false"/>
|
|
||||||
<Field id="77" x="239.069778" z="777.540955" isOwned="false"/>
|
|
||||||
<Field id="69" x="396.975281" z="637.613403" isOwned="false"/>
|
|
||||||
<Field id="76" x="739.881775" z="813.611511" isOwned="true"/>
|
|
||||||
<Field id="70" x="586.825378" z="705.438232" isOwned="false"/>
|
|
||||||
<Field id="71" x="668.519836" z="701.129578" isOwned="false"/>
|
|
||||||
<Field id="72" x="758.569336" z="692.212036" isOwned="true"/>
|
|
||||||
<Field id="68" x="576.092346" z="560.671936" isOwned="false"/>
|
|
||||||
<Field id="32" x="-35.142231" z="-942.601440" isOwned="true"/>
|
|
||||||
<Field id="14" x="-611.272827" z="-378.069733" isOwned="false"/>
|
|
||||||
<Field id="21" x="-810.375488" z="-588.185181" isOwned="false"/>
|
|
||||||
<Field id="52" x="854.823120" z="-377.560303" isOwned="false"/>
|
|
||||||
<Field id="53" x="938.655090" z="-230.773575" isOwned="false"/>
|
|
||||||
<Field id="75" x="645.798584" z="951.250000" isOwned="false"/>
|
|
||||||
<Field id="13" x="-566.716614" z="-461.777313" isOwned="false"/>
|
|
||||||
<Field id="16" x="-747.907288" z="-338.541107" isOwned="false"/>
|
|
||||||
<Field id="49" x="543.078125" z="-505.328125" isOwned="false"/>
|
|
||||||
<Field id="66" x="771.528442" z="244.920227" isOwned="false"/>
|
|
||||||
</Fields>
|
|
||||||
</Server>
|
|
||||||
File diff suppressed because it is too large
Load diff
|
|
@ -1,69 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8" standalone="no"?>
|
|
||||||
<careerSavegame revision="2" valid="true">
|
|
||||||
<settings>
|
|
||||||
<savegameName>Server Name</savegameName>
|
|
||||||
<creationDate>2024-11-12</creationDate>
|
|
||||||
<mapId>MapUS</mapId>
|
|
||||||
<mapTitle>Riverbend Springs</mapTitle>
|
|
||||||
<saveDateFormatted>18.11.2024</saveDateFormatted>
|
|
||||||
<saveDate>2024-11-18</saveDate>
|
|
||||||
<initialMoney>1000000</initialMoney>
|
|
||||||
<initialLoan>0</initialLoan>
|
|
||||||
<economicDifficulty>NORMAL</economicDifficulty>
|
|
||||||
<hasInitiallyOwnedFarmlands>false</hasInitiallyOwnedFarmlands>
|
|
||||||
<loadDefaultFarm>false</loadDefaultFarm>
|
|
||||||
<startWithGuidedTour>true</startWithGuidedTour>
|
|
||||||
<trafficEnabled>true</trafficEnabled>
|
|
||||||
<stopAndGoBraking>true</stopAndGoBraking>
|
|
||||||
<trailerFillLimit>false</trailerFillLimit>
|
|
||||||
<automaticMotorStartEnabled>false</automaticMotorStartEnabled>
|
|
||||||
<growthMode>2</growthMode>
|
|
||||||
<plannedDaysPerPeriod>1</plannedDaysPerPeriod>
|
|
||||||
<fruitDestruction>true</fruitDestruction>
|
|
||||||
<plowingRequiredEnabled>true</plowingRequiredEnabled>
|
|
||||||
<stonesEnabled>false</stonesEnabled>
|
|
||||||
<weedsEnabled>true</weedsEnabled>
|
|
||||||
<limeRequired>true</limeRequired>
|
|
||||||
<isSnowEnabled>true</isSnowEnabled>
|
|
||||||
<fuelUsage>2</fuelUsage>
|
|
||||||
<helperBuyFuel>false</helperBuyFuel>
|
|
||||||
<helperBuySeeds>false</helperBuySeeds>
|
|
||||||
<helperBuyFertilizer>false</helperBuyFertilizer>
|
|
||||||
<helperSlurrySource>1</helperSlurrySource>
|
|
||||||
<helperManureSource>1</helperManureSource>
|
|
||||||
<densityMapRevision>4</densityMapRevision>
|
|
||||||
<terrainTextureRevision>1</terrainTextureRevision>
|
|
||||||
<terrainLodTextureRevision>2</terrainLodTextureRevision>
|
|
||||||
<splitShapesRevision>2</splitShapesRevision>
|
|
||||||
<tipCollisionRevision>2</tipCollisionRevision>
|
|
||||||
<placementCollisionRevision>2</placementCollisionRevision>
|
|
||||||
<navigationCollisionRevision>2</navigationCollisionRevision>
|
|
||||||
<mapDensityMapRevision>1</mapDensityMapRevision>
|
|
||||||
<mapTerrainTextureRevision>1</mapTerrainTextureRevision>
|
|
||||||
<mapTerrainLodTextureRevision>1</mapTerrainLodTextureRevision>
|
|
||||||
<mapSplitShapesRevision>1</mapSplitShapesRevision>
|
|
||||||
<mapTipCollisionRevision>1</mapTipCollisionRevision>
|
|
||||||
<mapPlacementCollisionRevision>1</mapPlacementCollisionRevision>
|
|
||||||
<mapNavigationCollisionRevision>1</mapNavigationCollisionRevision>
|
|
||||||
<disasterDestructionState>VISUALS_ONLY</disasterDestructionState>
|
|
||||||
<dirtInterval>4</dirtInterval>
|
|
||||||
<timeScale>5.000000</timeScale>
|
|
||||||
<autoSaveInterval>60.000000</autoSaveInterval>
|
|
||||||
</settings>
|
|
||||||
<map>
|
|
||||||
<foundHelpIcons>00000000000000000000</foundHelpIcons>
|
|
||||||
</map>
|
|
||||||
<introductionHelp active="false">
|
|
||||||
<shownElements></shownElements>
|
|
||||||
<shownHints></shownHints>
|
|
||||||
</introductionHelp>
|
|
||||||
<statistics>
|
|
||||||
<money>233766</money>
|
|
||||||
<playTime>6849.572754</playTime>
|
|
||||||
</statistics>
|
|
||||||
<mapsSplitShapeFileIds count="1">
|
|
||||||
<id id="0"/>
|
|
||||||
</mapsSplitShapeFileIds>
|
|
||||||
<slotSystem slotUsage="1707"/>
|
|
||||||
<mod modName="pdlc_macDonPack" title="MacDon Pack" version="1.1.0.0" required="false" fileHash="a910fbe59bd919187cacbfc7b63ec5a6"/>
|
|
||||||
</careerSavegame>
|
|
||||||
Binary file not shown.
|
Before Width: | Height: | Size: 19 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 60 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 60 KiB |
Binary file not shown.
Binary file not shown.
|
Before Width: | Height: | Size: 166 KiB |
839
package-lock.json
generated
Normal file
839
package-lock.json
generated
Normal file
|
|
@ -0,0 +1,839 @@
|
||||||
|
{
|
||||||
|
"name": "ls25discord",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"lockfileVersion": 3,
|
||||||
|
"requires": true,
|
||||||
|
"packages": {
|
||||||
|
"": {
|
||||||
|
"name": "ls25discord",
|
||||||
|
"version": "0.1.0",
|
||||||
|
"license": "proprietary",
|
||||||
|
"dependencies": {
|
||||||
|
"discord.js": "^14.16.3",
|
||||||
|
"fast-xml-parser": "^4.5.0",
|
||||||
|
"winston": "^3.17.0"
|
||||||
|
},
|
||||||
|
"devDependencies": {
|
||||||
|
"@types/node": "^22.9.0",
|
||||||
|
"json-schema-to-typescript": "^15.0.3",
|
||||||
|
"typescript": "^5.6.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@apidevtools/json-schema-ref-parser": {
|
||||||
|
"version": "11.7.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/@apidevtools/json-schema-ref-parser/-/json-schema-ref-parser-11.7.2.tgz",
|
||||||
|
"integrity": "sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@jsdevtools/ono": "^7.1.3",
|
||||||
|
"@types/json-schema": "^7.0.15",
|
||||||
|
"js-yaml": "^4.1.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 16"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/philsturgeon"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@colors/colors": {
|
||||||
|
"version": "1.6.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.6.0.tgz",
|
||||||
|
"integrity": "sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.1.90"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@dabh/diagnostics": {
|
||||||
|
"version": "2.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@dabh/diagnostics/-/diagnostics-2.0.3.tgz",
|
||||||
|
"integrity": "sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"colorspace": "1.1.x",
|
||||||
|
"enabled": "2.0.x",
|
||||||
|
"kuler": "^2.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/builders": {
|
||||||
|
"version": "1.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discordjs/builders/-/builders-1.9.0.tgz",
|
||||||
|
"integrity": "sha512-0zx8DePNVvQibh5ly5kCEei5wtPBIUbSoE9n+91Rlladz4tgtFbJ36PZMxxZrTEOQ7AHMZ/b0crT/0fCy6FTKg==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@discordjs/formatters": "^0.5.0",
|
||||||
|
"@discordjs/util": "^1.1.1",
|
||||||
|
"@sapphire/shapeshift": "^4.0.0",
|
||||||
|
"discord-api-types": "0.37.97",
|
||||||
|
"fast-deep-equal": "^3.1.3",
|
||||||
|
"ts-mixer": "^6.0.4",
|
||||||
|
"tslib": "^2.6.3"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/builders/node_modules/discord-api-types": {
|
||||||
|
"version": "0.37.97",
|
||||||
|
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
|
||||||
|
"integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/collection": {
|
||||||
|
"version": "1.5.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-1.5.3.tgz",
|
||||||
|
"integrity": "sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.11.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/formatters": {
|
||||||
|
"version": "0.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discordjs/formatters/-/formatters-0.5.0.tgz",
|
||||||
|
"integrity": "sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"discord-api-types": "0.37.97"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/formatters/node_modules/discord-api-types": {
|
||||||
|
"version": "0.37.97",
|
||||||
|
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
|
||||||
|
"integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/rest": {
|
||||||
|
"version": "2.4.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discordjs/rest/-/rest-2.4.0.tgz",
|
||||||
|
"integrity": "sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@discordjs/collection": "^2.1.1",
|
||||||
|
"@discordjs/util": "^1.1.1",
|
||||||
|
"@sapphire/async-queue": "^1.5.3",
|
||||||
|
"@sapphire/snowflake": "^3.5.3",
|
||||||
|
"@vladfrangu/async_event_emitter": "^2.4.6",
|
||||||
|
"discord-api-types": "0.37.97",
|
||||||
|
"magic-bytes.js": "^1.10.0",
|
||||||
|
"tslib": "^2.6.3",
|
||||||
|
"undici": "6.19.8"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/rest/node_modules/@discordjs/collection": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/rest/node_modules/discord-api-types": {
|
||||||
|
"version": "0.37.97",
|
||||||
|
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.97.tgz",
|
||||||
|
"integrity": "sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/util": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discordjs/util/-/util-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/ws": {
|
||||||
|
"version": "1.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discordjs/ws/-/ws-1.1.1.tgz",
|
||||||
|
"integrity": "sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@discordjs/collection": "^2.1.0",
|
||||||
|
"@discordjs/rest": "^2.3.0",
|
||||||
|
"@discordjs/util": "^1.1.0",
|
||||||
|
"@sapphire/async-queue": "^1.5.2",
|
||||||
|
"@types/ws": "^8.5.10",
|
||||||
|
"@vladfrangu/async_event_emitter": "^2.2.4",
|
||||||
|
"discord-api-types": "0.37.83",
|
||||||
|
"tslib": "^2.6.2",
|
||||||
|
"ws": "^8.16.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.11.0"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/ws/node_modules/@discordjs/collection": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/@discordjs/collection/-/collection-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@discordjs/ws/node_modules/discord-api-types": {
|
||||||
|
"version": "0.37.83",
|
||||||
|
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.83.tgz",
|
||||||
|
"integrity": "sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@jsdevtools/ono": {
|
||||||
|
"version": "7.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@jsdevtools/ono/-/ono-7.1.3.tgz",
|
||||||
|
"integrity": "sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@sapphire/async-queue": {
|
||||||
|
"version": "1.5.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sapphire/async-queue/-/async-queue-1.5.5.tgz",
|
||||||
|
"integrity": "sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=v14.0.0",
|
||||||
|
"npm": ">=7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sapphire/shapeshift": {
|
||||||
|
"version": "4.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sapphire/shapeshift/-/shapeshift-4.0.0.tgz",
|
||||||
|
"integrity": "sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fast-deep-equal": "^3.1.3",
|
||||||
|
"lodash": "^4.17.21"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=v16"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@sapphire/snowflake": {
|
||||||
|
"version": "3.5.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/@sapphire/snowflake/-/snowflake-3.5.3.tgz",
|
||||||
|
"integrity": "sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=v14.0.0",
|
||||||
|
"npm": ">=7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/json-schema": {
|
||||||
|
"version": "7.0.15",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz",
|
||||||
|
"integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@types/lodash": {
|
||||||
|
"version": "4.17.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.13.tgz",
|
||||||
|
"integrity": "sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@types/node": {
|
||||||
|
"version": "22.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-22.9.0.tgz",
|
||||||
|
"integrity": "sha512-vuyHg81vvWA1Z1ELfvLko2c8f34gyA0zaic0+Rllc5lbCnbSyuvb2Oxpm6TAUAC/2xZN3QGqxBNggD1nNR2AfQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"undici-types": "~6.19.8"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@types/triple-beam": {
|
||||||
|
"version": "1.3.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/triple-beam/-/triple-beam-1.3.5.tgz",
|
||||||
|
"integrity": "sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/@types/ws": {
|
||||||
|
"version": "8.5.13",
|
||||||
|
"resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.13.tgz",
|
||||||
|
"integrity": "sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@types/node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/@vladfrangu/async_event_emitter": {
|
||||||
|
"version": "2.4.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/@vladfrangu/async_event_emitter/-/async_event_emitter-2.4.6.tgz",
|
||||||
|
"integrity": "sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=v14.0.0",
|
||||||
|
"npm": ">=7.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/argparse": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Python-2.0"
|
||||||
|
},
|
||||||
|
"node_modules/async": {
|
||||||
|
"version": "3.2.6",
|
||||||
|
"resolved": "https://registry.npmjs.org/async/-/async-3.2.6.tgz",
|
||||||
|
"integrity": "sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/color": {
|
||||||
|
"version": "3.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz",
|
||||||
|
"integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"color-convert": "^1.9.3",
|
||||||
|
"color-string": "^1.6.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-convert": {
|
||||||
|
"version": "1.9.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz",
|
||||||
|
"integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"color-name": "1.1.3"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/color-name": {
|
||||||
|
"version": "1.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz",
|
||||||
|
"integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/color-string": {
|
||||||
|
"version": "1.9.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz",
|
||||||
|
"integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"color-name": "^1.0.0",
|
||||||
|
"simple-swizzle": "^0.2.2"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/colorspace": {
|
||||||
|
"version": "1.1.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/colorspace/-/colorspace-1.1.4.tgz",
|
||||||
|
"integrity": "sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"color": "^3.1.3",
|
||||||
|
"text-hex": "1.0.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/discord-api-types": {
|
||||||
|
"version": "0.37.100",
|
||||||
|
"resolved": "https://registry.npmjs.org/discord-api-types/-/discord-api-types-0.37.100.tgz",
|
||||||
|
"integrity": "sha512-a8zvUI0GYYwDtScfRd/TtaNBDTXwP5DiDVX7K5OmE+DRT57gBqKnwtOC5Ol8z0mRW8KQfETIgiB8U0YZ9NXiCA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/discord.js": {
|
||||||
|
"version": "14.16.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/discord.js/-/discord.js-14.16.3.tgz",
|
||||||
|
"integrity": "sha512-EPCWE9OkA9DnFFNrO7Kl1WHHDYFXu3CNVFJg63bfU7hVtjZGyhShwZtSBImINQRWxWP2tgo2XI+QhdXx28r0aA==",
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"dependencies": {
|
||||||
|
"@discordjs/builders": "^1.9.0",
|
||||||
|
"@discordjs/collection": "1.5.3",
|
||||||
|
"@discordjs/formatters": "^0.5.0",
|
||||||
|
"@discordjs/rest": "^2.4.0",
|
||||||
|
"@discordjs/util": "^1.1.1",
|
||||||
|
"@discordjs/ws": "1.1.1",
|
||||||
|
"@sapphire/snowflake": "3.5.3",
|
||||||
|
"discord-api-types": "0.37.100",
|
||||||
|
"fast-deep-equal": "3.1.3",
|
||||||
|
"lodash.snakecase": "4.1.1",
|
||||||
|
"tslib": "^2.6.3",
|
||||||
|
"undici": "6.19.8"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/discordjs/discord.js?sponsor"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/enabled": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/enabled/-/enabled-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/fast-deep-equal": {
|
||||||
|
"version": "3.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
|
||||||
|
"integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/fast-xml-parser": {
|
||||||
|
"version": "4.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.5.0.tgz",
|
||||||
|
"integrity": "sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/NaturalIntelligence"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "paypal",
|
||||||
|
"url": "https://paypal.me/naturalintelligence"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"strnum": "^1.0.5"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"fxparser": "src/cli/cli.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fdir": {
|
||||||
|
"version": "6.4.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/fdir/-/fdir-6.4.2.tgz",
|
||||||
|
"integrity": "sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"peerDependencies": {
|
||||||
|
"picomatch": "^3 || ^4"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"picomatch": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/fecha": {
|
||||||
|
"version": "4.2.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
|
||||||
|
"integrity": "sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/fn.name": {
|
||||||
|
"version": "1.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/fn.name/-/fn.name-1.1.0.tgz",
|
||||||
|
"integrity": "sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/inherits": {
|
||||||
|
"version": "2.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
|
||||||
|
"integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==",
|
||||||
|
"license": "ISC"
|
||||||
|
},
|
||||||
|
"node_modules/is-arrayish": {
|
||||||
|
"version": "0.3.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz",
|
||||||
|
"integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/is-extglob": {
|
||||||
|
"version": "2.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz",
|
||||||
|
"integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-glob": {
|
||||||
|
"version": "4.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz",
|
||||||
|
"integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"is-extglob": "^2.1.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=0.10.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/is-stream": {
|
||||||
|
"version": "2.0.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz",
|
||||||
|
"integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=8"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/sindresorhus"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/js-yaml": {
|
||||||
|
"version": "4.1.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz",
|
||||||
|
"integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"argparse": "^2.0.1"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"js-yaml": "bin/js-yaml.js"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/json-schema-to-typescript": {
|
||||||
|
"version": "15.0.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/json-schema-to-typescript/-/json-schema-to-typescript-15.0.3.tgz",
|
||||||
|
"integrity": "sha512-iOKdzTUWEVM4nlxpFudFsWyUiu/Jakkga4OZPEt7CGoSEsAsUgdOZqR6pcgx2STBek9Gm4hcarJpXSzIvZ/hKA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@apidevtools/json-schema-ref-parser": "^11.5.5",
|
||||||
|
"@types/json-schema": "^7.0.15",
|
||||||
|
"@types/lodash": "^4.17.7",
|
||||||
|
"is-glob": "^4.0.3",
|
||||||
|
"js-yaml": "^4.1.0",
|
||||||
|
"lodash": "^4.17.21",
|
||||||
|
"minimist": "^1.2.8",
|
||||||
|
"prettier": "^3.2.5",
|
||||||
|
"tinyglobby": "^0.2.9"
|
||||||
|
},
|
||||||
|
"bin": {
|
||||||
|
"json2ts": "dist/src/cli.js"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=16.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/kuler": {
|
||||||
|
"version": "2.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/kuler/-/kuler-2.0.0.tgz",
|
||||||
|
"integrity": "sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/lodash": {
|
||||||
|
"version": "4.17.21",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz",
|
||||||
|
"integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/lodash.snakecase": {
|
||||||
|
"version": "4.1.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/lodash.snakecase/-/lodash.snakecase-4.1.1.tgz",
|
||||||
|
"integrity": "sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/logform": {
|
||||||
|
"version": "2.7.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/logform/-/logform-2.7.0.tgz",
|
||||||
|
"integrity": "sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@colors/colors": "1.6.0",
|
||||||
|
"@types/triple-beam": "^1.3.2",
|
||||||
|
"fecha": "^4.2.0",
|
||||||
|
"ms": "^2.1.1",
|
||||||
|
"safe-stable-stringify": "^2.3.1",
|
||||||
|
"triple-beam": "^1.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/magic-bytes.js": {
|
||||||
|
"version": "1.10.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/magic-bytes.js/-/magic-bytes.js-1.10.0.tgz",
|
||||||
|
"integrity": "sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/minimist": {
|
||||||
|
"version": "1.2.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz",
|
||||||
|
"integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/ljharb"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ms": {
|
||||||
|
"version": "2.1.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz",
|
||||||
|
"integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/one-time": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/one-time/-/one-time-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fn.name": "1.x.x"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/picomatch": {
|
||||||
|
"version": "4.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/picomatch/-/picomatch-4.0.2.tgz",
|
||||||
|
"integrity": "sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/sponsors/jonschlinkert"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/prettier": {
|
||||||
|
"version": "3.3.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/prettier/-/prettier-3.3.3.tgz",
|
||||||
|
"integrity": "sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"bin": {
|
||||||
|
"prettier": "bin/prettier.cjs"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14"
|
||||||
|
},
|
||||||
|
"funding": {
|
||||||
|
"url": "https://github.com/prettier/prettier?sponsor=1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/readable-stream": {
|
||||||
|
"version": "3.6.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.2.tgz",
|
||||||
|
"integrity": "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"inherits": "^2.0.3",
|
||||||
|
"string_decoder": "^1.1.1",
|
||||||
|
"util-deprecate": "^1.0.1"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 6"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/safe-buffer": {
|
||||||
|
"version": "5.2.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz",
|
||||||
|
"integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==",
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"type": "github",
|
||||||
|
"url": "https://github.com/sponsors/feross"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "patreon",
|
||||||
|
"url": "https://www.patreon.com/feross"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"type": "consulting",
|
||||||
|
"url": "https://feross.org/support"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/safe-stable-stringify": {
|
||||||
|
"version": "2.5.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/safe-stable-stringify/-/safe-stable-stringify-2.5.0.tgz",
|
||||||
|
"integrity": "sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/simple-swizzle": {
|
||||||
|
"version": "0.2.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz",
|
||||||
|
"integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"is-arrayish": "^0.3.1"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/stack-trace": {
|
||||||
|
"version": "0.0.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.10.tgz",
|
||||||
|
"integrity": "sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": "*"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/string_decoder": {
|
||||||
|
"version": "1.3.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz",
|
||||||
|
"integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"safe-buffer": "~5.2.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/strnum": {
|
||||||
|
"version": "1.0.5",
|
||||||
|
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
|
||||||
|
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/text-hex": {
|
||||||
|
"version": "1.0.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/text-hex/-/text-hex-1.0.0.tgz",
|
||||||
|
"integrity": "sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/tinyglobby": {
|
||||||
|
"version": "0.2.10",
|
||||||
|
"resolved": "https://registry.npmjs.org/tinyglobby/-/tinyglobby-0.2.10.tgz",
|
||||||
|
"integrity": "sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"fdir": "^6.4.2",
|
||||||
|
"picomatch": "^4.0.2"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/triple-beam": {
|
||||||
|
"version": "1.4.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/triple-beam/-/triple-beam-1.4.1.tgz",
|
||||||
|
"integrity": "sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 14.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ts-mixer": {
|
||||||
|
"version": "6.0.4",
|
||||||
|
"resolved": "https://registry.npmjs.org/ts-mixer/-/ts-mixer-6.0.4.tgz",
|
||||||
|
"integrity": "sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/tslib": {
|
||||||
|
"version": "2.8.1",
|
||||||
|
"resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz",
|
||||||
|
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
||||||
|
"license": "0BSD"
|
||||||
|
},
|
||||||
|
"node_modules/typescript": {
|
||||||
|
"version": "5.6.3",
|
||||||
|
"resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.3.tgz",
|
||||||
|
"integrity": "sha512-hjcS1mhfuyi4WW8IWtjP7brDrG2cuDZukyrYrSauoXGNgx0S7zceP07adYkJycEr56BOUTNPzbInooiN3fn1qw==",
|
||||||
|
"dev": true,
|
||||||
|
"license": "Apache-2.0",
|
||||||
|
"bin": {
|
||||||
|
"tsc": "bin/tsc",
|
||||||
|
"tsserver": "bin/tsserver"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">=14.17"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/undici": {
|
||||||
|
"version": "6.19.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici/-/undici-6.19.8.tgz",
|
||||||
|
"integrity": "sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=18.17"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/undici-types": {
|
||||||
|
"version": "6.19.8",
|
||||||
|
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz",
|
||||||
|
"integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/util-deprecate": {
|
||||||
|
"version": "1.0.2",
|
||||||
|
"resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
|
||||||
|
"integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==",
|
||||||
|
"license": "MIT"
|
||||||
|
},
|
||||||
|
"node_modules/winston": {
|
||||||
|
"version": "3.17.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/winston/-/winston-3.17.0.tgz",
|
||||||
|
"integrity": "sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"@colors/colors": "^1.6.0",
|
||||||
|
"@dabh/diagnostics": "^2.0.2",
|
||||||
|
"async": "^3.2.3",
|
||||||
|
"is-stream": "^2.0.0",
|
||||||
|
"logform": "^2.7.0",
|
||||||
|
"one-time": "^1.0.0",
|
||||||
|
"readable-stream": "^3.4.0",
|
||||||
|
"safe-stable-stringify": "^2.3.1",
|
||||||
|
"stack-trace": "0.0.x",
|
||||||
|
"triple-beam": "^1.3.0",
|
||||||
|
"winston-transport": "^4.9.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/winston-transport": {
|
||||||
|
"version": "4.9.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/winston-transport/-/winston-transport-4.9.0.tgz",
|
||||||
|
"integrity": "sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==",
|
||||||
|
"license": "MIT",
|
||||||
|
"dependencies": {
|
||||||
|
"logform": "^2.7.0",
|
||||||
|
"readable-stream": "^3.6.2",
|
||||||
|
"triple-beam": "^1.3.0"
|
||||||
|
},
|
||||||
|
"engines": {
|
||||||
|
"node": ">= 12.0.0"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"node_modules/ws": {
|
||||||
|
"version": "8.18.0",
|
||||||
|
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
|
||||||
|
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
|
||||||
|
"license": "MIT",
|
||||||
|
"engines": {
|
||||||
|
"node": ">=10.0.0"
|
||||||
|
},
|
||||||
|
"peerDependencies": {
|
||||||
|
"bufferutil": "^4.0.1",
|
||||||
|
"utf-8-validate": ">=5.0.2"
|
||||||
|
},
|
||||||
|
"peerDependenciesMeta": {
|
||||||
|
"bufferutil": {
|
||||||
|
"optional": true
|
||||||
|
},
|
||||||
|
"utf-8-validate": {
|
||||||
|
"optional": true
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
@ -1,12 +1,10 @@
|
||||||
{
|
{
|
||||||
"name": "ls25-discord-bot",
|
"name": "ls25discord",
|
||||||
"version": "0.1.8",
|
"version": "0.1.0",
|
||||||
"description": "A simple discord bot for farming simulator 25",
|
"description": "A simple discord bot for farming simulator 25",
|
||||||
"main": "source/Main.ts",
|
"main": "source/Main.ts",
|
||||||
"scripts": {
|
"scripts": {
|
||||||
"start": "npx tsc && node build/Main.js",
|
"start": "npx tsc && node build/Main.js",
|
||||||
"start-only": "node build/Main.js",
|
|
||||||
"build": "npx tsc",
|
|
||||||
"schema": "npx json2ts -i source/Schema/ServerStats.json -o ./source/Schema/ServerStats.d.ts --unreachableDefinitions",
|
"schema": "npx json2ts -i source/Schema/ServerStats.json -o ./source/Schema/ServerStats.d.ts --unreachableDefinitions",
|
||||||
"test": "echo \"Error: no test specified\" && exit 1"
|
"test": "echo \"Error: no test specified\" && exit 1"
|
||||||
},
|
},
|
||||||
|
|
|
||||||
580
pnpm-lock.yaml
580
pnpm-lock.yaml
|
|
@ -1,580 +0,0 @@
|
||||||
lockfileVersion: '9.0'
|
|
||||||
|
|
||||||
settings:
|
|
||||||
autoInstallPeers: true
|
|
||||||
excludeLinksFromLockfile: false
|
|
||||||
|
|
||||||
importers:
|
|
||||||
|
|
||||||
.:
|
|
||||||
dependencies:
|
|
||||||
discord.js:
|
|
||||||
specifier: ^14.16.3
|
|
||||||
version: 14.16.3
|
|
||||||
fast-xml-parser:
|
|
||||||
specifier: ^4.5.0
|
|
||||||
version: 4.5.0
|
|
||||||
winston:
|
|
||||||
specifier: ^3.17.0
|
|
||||||
version: 3.17.0
|
|
||||||
devDependencies:
|
|
||||||
'@types/node':
|
|
||||||
specifier: ^22.9.0
|
|
||||||
version: 22.10.1
|
|
||||||
json-schema-to-typescript:
|
|
||||||
specifier: ^15.0.3
|
|
||||||
version: 15.0.3
|
|
||||||
typescript:
|
|
||||||
specifier: ^5.6.3
|
|
||||||
version: 5.7.2
|
|
||||||
|
|
||||||
packages:
|
|
||||||
|
|
||||||
'@apidevtools/json-schema-ref-parser@11.7.2':
|
|
||||||
resolution: {integrity: sha512-4gY54eEGEstClvEkGnwVkTkrx0sqwemEFG5OSRRn3tD91XH0+Q8XIkYIfo7IwEWPpJZwILb9GUXeShtplRc/eA==}
|
|
||||||
engines: {node: '>= 16'}
|
|
||||||
|
|
||||||
'@colors/colors@1.6.0':
|
|
||||||
resolution: {integrity: sha512-Ir+AOibqzrIsL6ajt3Rz3LskB7OiMVHqltZmspbW/TJuTVuyOMirVqAkjfY6JISiLHgyNqicAC8AyHHGzNd/dA==}
|
|
||||||
engines: {node: '>=0.1.90'}
|
|
||||||
|
|
||||||
'@dabh/diagnostics@2.0.3':
|
|
||||||
resolution: {integrity: sha512-hrlQOIi7hAfzsMqlGSFyVucrx38O+j6wiGOf//H2ecvIEqYN4ADBSS2iLMh5UFyDunCNniUIPk/q3riFv45xRA==}
|
|
||||||
|
|
||||||
'@discordjs/builders@1.9.0':
|
|
||||||
resolution: {integrity: sha512-0zx8DePNVvQibh5ly5kCEei5wtPBIUbSoE9n+91Rlladz4tgtFbJ36PZMxxZrTEOQ7AHMZ/b0crT/0fCy6FTKg==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
|
|
||||||
'@discordjs/collection@1.5.3':
|
|
||||||
resolution: {integrity: sha512-SVb428OMd3WO1paV3rm6tSjM4wC+Kecaa1EUGX7vc6/fddvw/6lg90z4QtCqm21zvVe92vMMDt9+DkIvjXImQQ==}
|
|
||||||
engines: {node: '>=16.11.0'}
|
|
||||||
|
|
||||||
'@discordjs/collection@2.1.1':
|
|
||||||
resolution: {integrity: sha512-LiSusze9Tc7qF03sLCujF5iZp7K+vRNEDBZ86FT9aQAv3vxMLihUvKvpsCWiQ2DJq1tVckopKm1rxomgNUc9hg==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
|
|
||||||
'@discordjs/formatters@0.5.0':
|
|
||||||
resolution: {integrity: sha512-98b3i+Y19RFq1Xke4NkVY46x8KjJQjldHUuEbCqMvp1F5Iq9HgnGpu91jOi/Ufazhty32eRsKnnzS8n4c+L93g==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
|
|
||||||
'@discordjs/rest@2.4.0':
|
|
||||||
resolution: {integrity: sha512-Xb2irDqNcq+O8F0/k/NaDp7+t091p+acb51iA4bCKfIn+WFWd6HrNvcsSbMMxIR9NjcMZS6NReTKygqiQN+ntw==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
|
|
||||||
'@discordjs/util@1.1.1':
|
|
||||||
resolution: {integrity: sha512-eddz6UnOBEB1oITPinyrB2Pttej49M9FZQY8NxgEvc3tq6ZICZ19m70RsmzRdDHk80O9NoYN/25AqJl8vPVf/g==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
|
|
||||||
'@discordjs/ws@1.1.1':
|
|
||||||
resolution: {integrity: sha512-PZ+vLpxGCRtmr2RMkqh8Zp+BenUaJqlS6xhgWKEZcgC/vfHLEzpHtKkB0sl3nZWpwtcKk6YWy+pU3okL2I97FA==}
|
|
||||||
engines: {node: '>=16.11.0'}
|
|
||||||
|
|
||||||
'@jsdevtools/ono@7.1.3':
|
|
||||||
resolution: {integrity: sha512-4JQNk+3mVzK3xh2rqd6RB4J46qUR19azEHBneZyTZM+c456qOrbbM/5xcR8huNCCcbVt7+UmizG6GuUvPvKUYg==}
|
|
||||||
|
|
||||||
'@sapphire/async-queue@1.5.5':
|
|
||||||
resolution: {integrity: sha512-cvGzxbba6sav2zZkH8GPf2oGk9yYoD5qrNWdu9fRehifgnFZJMV+nuy2nON2roRO4yQQ+v7MK/Pktl/HgfsUXg==}
|
|
||||||
engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
|
|
||||||
|
|
||||||
'@sapphire/shapeshift@4.0.0':
|
|
||||||
resolution: {integrity: sha512-d9dUmWVA7MMiKobL3VpLF8P2aeanRTu6ypG2OIaEv/ZHH/SUQ2iHOVyi5wAPjQ+HmnMuL0whK9ez8I/raWbtIg==}
|
|
||||||
engines: {node: '>=v16'}
|
|
||||||
|
|
||||||
'@sapphire/snowflake@3.5.3':
|
|
||||||
resolution: {integrity: sha512-jjmJywLAFoWeBi1W7994zZyiNWPIiqRRNAmSERxyg93xRGzNYvGjlZ0gR6x0F4gPRi2+0O6S71kOZYyr3cxaIQ==}
|
|
||||||
engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
|
|
||||||
|
|
||||||
'@types/json-schema@7.0.15':
|
|
||||||
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
|
|
||||||
|
|
||||||
'@types/lodash@4.17.13':
|
|
||||||
resolution: {integrity: sha512-lfx+dftrEZcdBPczf9d0Qv0x+j/rfNCMuC6OcfXmO8gkfeNAY88PgKUbvG56whcN23gc27yenwF6oJZXGFpYxg==}
|
|
||||||
|
|
||||||
'@types/node@22.10.1':
|
|
||||||
resolution: {integrity: sha512-qKgsUwfHZV2WCWLAnVP1JqnpE6Im6h3Y0+fYgMTasNQ7V++CBX5OT1as0g0f+OyubbFqhf6XVNIsmN4IIhEgGQ==}
|
|
||||||
|
|
||||||
'@types/triple-beam@1.3.5':
|
|
||||||
resolution: {integrity: sha512-6WaYesThRMCl19iryMYP7/x2OVgCtbIVflDGFpWnb9irXI3UjYE4AzmYuiUKY1AJstGijoY+MgUszMgRxIYTYw==}
|
|
||||||
|
|
||||||
'@types/ws@8.5.13':
|
|
||||||
resolution: {integrity: sha512-osM/gWBTPKgHV8XkTunnegTRIsvF6owmf5w+JtAfOw472dptdm0dlGv4xCt6GwQRcC2XVOvvRE/0bAoQcL2QkA==}
|
|
||||||
|
|
||||||
'@vladfrangu/async_event_emitter@2.4.6':
|
|
||||||
resolution: {integrity: sha512-RaI5qZo6D2CVS6sTHFKg1v5Ohq/+Bo2LZ5gzUEwZ/WkHhwtGTCB/sVLw8ijOkAUxasZ+WshN/Rzj4ywsABJ5ZA==}
|
|
||||||
engines: {node: '>=v14.0.0', npm: '>=7.0.0'}
|
|
||||||
|
|
||||||
argparse@2.0.1:
|
|
||||||
resolution: {integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==}
|
|
||||||
|
|
||||||
async@3.2.6:
|
|
||||||
resolution: {integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==}
|
|
||||||
|
|
||||||
color-convert@1.9.3:
|
|
||||||
resolution: {integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==}
|
|
||||||
|
|
||||||
color-name@1.1.3:
|
|
||||||
resolution: {integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==}
|
|
||||||
|
|
||||||
color-name@1.1.4:
|
|
||||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
|
||||||
|
|
||||||
color-string@1.9.1:
|
|
||||||
resolution: {integrity: sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==}
|
|
||||||
|
|
||||||
color@3.2.1:
|
|
||||||
resolution: {integrity: sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==}
|
|
||||||
|
|
||||||
colorspace@1.1.4:
|
|
||||||
resolution: {integrity: sha512-BgvKJiuVu1igBUF2kEjRCZXol6wiiGbY5ipL/oVPwm0BL9sIpMIzM8IK7vwuxIIzOXMV3Ey5w+vxhm0rR/TN8w==}
|
|
||||||
|
|
||||||
discord-api-types@0.37.100:
|
|
||||||
resolution: {integrity: sha512-a8zvUI0GYYwDtScfRd/TtaNBDTXwP5DiDVX7K5OmE+DRT57gBqKnwtOC5Ol8z0mRW8KQfETIgiB8U0YZ9NXiCA==}
|
|
||||||
|
|
||||||
discord-api-types@0.37.83:
|
|
||||||
resolution: {integrity: sha512-urGGYeWtWNYMKnYlZnOnDHm8fVRffQs3U0SpE8RHeiuLKb/u92APS8HoQnPTFbnXmY1vVnXjXO4dOxcAn3J+DA==}
|
|
||||||
|
|
||||||
discord-api-types@0.37.97:
|
|
||||||
resolution: {integrity: sha512-No1BXPcVkyVD4ZVmbNgDKaBoqgeQ+FJpzZ8wqHkfmBnTZig1FcH3iPPersiK1TUIAzgClh2IvOuVUYfcWLQAOA==}
|
|
||||||
|
|
||||||
discord.js@14.16.3:
|
|
||||||
resolution: {integrity: sha512-EPCWE9OkA9DnFFNrO7Kl1WHHDYFXu3CNVFJg63bfU7hVtjZGyhShwZtSBImINQRWxWP2tgo2XI+QhdXx28r0aA==}
|
|
||||||
engines: {node: '>=18'}
|
|
||||||
|
|
||||||
enabled@2.0.0:
|
|
||||||
resolution: {integrity: sha512-AKrN98kuwOzMIdAizXGI86UFBoo26CL21UM763y1h/GMSJ4/OHU9k2YlsmBpyScFo/wbLzWQJBMCW4+IO3/+OQ==}
|
|
||||||
|
|
||||||
fast-deep-equal@3.1.3:
|
|
||||||
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
|
|
||||||
|
|
||||||
fast-xml-parser@4.5.0:
|
|
||||||
resolution: {integrity: sha512-/PlTQCI96+fZMAOLMZK4CWG1ItCbfZ/0jx7UIJFChPNrx7tcEgerUgWbeieCM9MfHInUDyK8DWYZ+YrywDJuTg==}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
fdir@6.4.2:
|
|
||||||
resolution: {integrity: sha512-KnhMXsKSPZlAhp7+IjUkRZKPb4fUyccpDrdFXbi4QL1qkmFh9kVY09Yox+n4MaOb3lHZ1Tv829C3oaaXoMYPDQ==}
|
|
||||||
peerDependencies:
|
|
||||||
picomatch: ^3 || ^4
|
|
||||||
peerDependenciesMeta:
|
|
||||||
picomatch:
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
fecha@4.2.3:
|
|
||||||
resolution: {integrity: sha512-OP2IUU6HeYKJi3i0z4A19kHMQoLVs4Hc+DPqqxI2h/DPZHTm/vjsfC6P0b4jCMy14XizLBqvndQ+UilD7707Jw==}
|
|
||||||
|
|
||||||
fn.name@1.1.0:
|
|
||||||
resolution: {integrity: sha512-GRnmB5gPyJpAhTQdSZTSp9uaPSvl09KoYcMQtsB9rQoOmzs9dH6ffeccH+Z+cv6P68Hu5bC6JjRh4Ah/mHSNRw==}
|
|
||||||
|
|
||||||
inherits@2.0.4:
|
|
||||||
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
|
|
||||||
|
|
||||||
is-arrayish@0.3.2:
|
|
||||||
resolution: {integrity: sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==}
|
|
||||||
|
|
||||||
is-extglob@2.1.1:
|
|
||||||
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
|
|
||||||
engines: {node: '>=0.10.0'}
|
|
||||||
|
|
||||||
is-glob@4.0.3:
|
|
||||||
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
|
|
||||||
engines: {node: '>=0.10.0'}
|
|
||||||
|
|
||||||
is-stream@2.0.1:
|
|
||||||
resolution: {integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==}
|
|
||||||
engines: {node: '>=8'}
|
|
||||||
|
|
||||||
js-yaml@4.1.0:
|
|
||||||
resolution: {integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
json-schema-to-typescript@15.0.3:
|
|
||||||
resolution: {integrity: sha512-iOKdzTUWEVM4nlxpFudFsWyUiu/Jakkga4OZPEt7CGoSEsAsUgdOZqR6pcgx2STBek9Gm4hcarJpXSzIvZ/hKA==}
|
|
||||||
engines: {node: '>=16.0.0'}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
kuler@2.0.0:
|
|
||||||
resolution: {integrity: sha512-Xq9nH7KlWZmXAtodXDDRE7vs6DU1gTU8zYDHDiWLSip45Egwq3plLHzPn27NgvzL2r1LMPC1vdqh98sQxtqj4A==}
|
|
||||||
|
|
||||||
lodash.snakecase@4.1.1:
|
|
||||||
resolution: {integrity: sha512-QZ1d4xoBHYUeuouhEq3lk3Uq7ldgyFXGBhg04+oRLnIz8o9T65Eh+8YdroUwn846zchkA9yDsDl5CVVaV2nqYw==}
|
|
||||||
|
|
||||||
lodash@4.17.21:
|
|
||||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
|
||||||
|
|
||||||
logform@2.7.0:
|
|
||||||
resolution: {integrity: sha512-TFYA4jnP7PVbmlBIfhlSe+WKxs9dklXMTEGcBCIvLhE/Tn3H6Gk1norupVW7m5Cnd4bLcr08AytbyV/xj7f/kQ==}
|
|
||||||
engines: {node: '>= 12.0.0'}
|
|
||||||
|
|
||||||
magic-bytes.js@1.10.0:
|
|
||||||
resolution: {integrity: sha512-/k20Lg2q8LE5xiaaSkMXk4sfvI+9EGEykFS4b0CHHGWqDYU0bGUFSwchNOMA56D7TCs9GwVTkqe9als1/ns8UQ==}
|
|
||||||
|
|
||||||
minimist@1.2.8:
|
|
||||||
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
|
|
||||||
|
|
||||||
ms@2.1.3:
|
|
||||||
resolution: {integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==}
|
|
||||||
|
|
||||||
one-time@1.0.0:
|
|
||||||
resolution: {integrity: sha512-5DXOiRKwuSEcQ/l0kGCF6Q3jcADFv5tSmRaJck/OqkVFcOzutB134KRSfF0xDrL39MNnqxbHBbUUcjZIhTgb2g==}
|
|
||||||
|
|
||||||
picomatch@4.0.2:
|
|
||||||
resolution: {integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==}
|
|
||||||
engines: {node: '>=12'}
|
|
||||||
|
|
||||||
prettier@3.4.1:
|
|
||||||
resolution: {integrity: sha512-G+YdqtITVZmOJje6QkXQWzl3fSfMxFwm1tjTyo9exhkmWSqC4Yhd1+lug++IlR2mvRVAxEDDWYkQdeSztajqgg==}
|
|
||||||
engines: {node: '>=14'}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
readable-stream@3.6.2:
|
|
||||||
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
|
|
||||||
engines: {node: '>= 6'}
|
|
||||||
|
|
||||||
safe-buffer@5.2.1:
|
|
||||||
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
|
|
||||||
|
|
||||||
safe-stable-stringify@2.5.0:
|
|
||||||
resolution: {integrity: sha512-b3rppTKm9T+PsVCBEOUR46GWI7fdOs00VKZ1+9c1EWDaDMvjQc6tUwuFyIprgGgTcWoVHSKrU8H31ZHA2e0RHA==}
|
|
||||||
engines: {node: '>=10'}
|
|
||||||
|
|
||||||
simple-swizzle@0.2.2:
|
|
||||||
resolution: {integrity: sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==}
|
|
||||||
|
|
||||||
stack-trace@0.0.10:
|
|
||||||
resolution: {integrity: sha512-KGzahc7puUKkzyMt+IqAep+TVNbKP+k2Lmwhub39m1AsTSkaDutx56aDCo+HLDzf/D26BIHTJWNiTG1KAJiQCg==}
|
|
||||||
|
|
||||||
string_decoder@1.3.0:
|
|
||||||
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
|
|
||||||
|
|
||||||
strnum@1.0.5:
|
|
||||||
resolution: {integrity: sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==}
|
|
||||||
|
|
||||||
text-hex@1.0.0:
|
|
||||||
resolution: {integrity: sha512-uuVGNWzgJ4yhRaNSiubPY7OjISw4sw4E5Uv0wbjp+OzcbmVU/rsT8ujgcXJhn9ypzsgr5vlzpPqP+MBBKcGvbg==}
|
|
||||||
|
|
||||||
tinyglobby@0.2.10:
|
|
||||||
resolution: {integrity: sha512-Zc+8eJlFMvgatPZTl6A9L/yht8QqdmUNtURHaKZLmKBE12hNPSrqNkUp2cs3M/UKmNVVAMFQYSjYIVHDjW5zew==}
|
|
||||||
engines: {node: '>=12.0.0'}
|
|
||||||
|
|
||||||
triple-beam@1.4.1:
|
|
||||||
resolution: {integrity: sha512-aZbgViZrg1QNcG+LULa7nhZpJTZSLm/mXnHXnbAbjmN5aSa0y7V+wvv6+4WaBtpISJzThKy+PIPxc1Nq1EJ9mg==}
|
|
||||||
engines: {node: '>= 14.0.0'}
|
|
||||||
|
|
||||||
ts-mixer@6.0.4:
|
|
||||||
resolution: {integrity: sha512-ufKpbmrugz5Aou4wcr5Wc1UUFWOLhq+Fm6qa6P0w0K5Qw2yhaUoiWszhCVuNQyNwrlGiscHOmqYoAox1PtvgjA==}
|
|
||||||
|
|
||||||
tslib@2.8.1:
|
|
||||||
resolution: {integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==}
|
|
||||||
|
|
||||||
typescript@5.7.2:
|
|
||||||
resolution: {integrity: sha512-i5t66RHxDvVN40HfDd1PsEThGNnlMCMT3jMUuoh9/0TaqWevNontacunWyN02LA9/fIbEWlcHZcgTKb9QoaLfg==}
|
|
||||||
engines: {node: '>=14.17'}
|
|
||||||
hasBin: true
|
|
||||||
|
|
||||||
undici-types@6.20.0:
|
|
||||||
resolution: {integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==}
|
|
||||||
|
|
||||||
undici@6.19.8:
|
|
||||||
resolution: {integrity: sha512-U8uCCl2x9TK3WANvmBavymRzxbfFYG+tAu+fgx3zxQy3qdagQqBLwJVrdyO1TBfUXvfKveMKJZhpvUYoOjM+4g==}
|
|
||||||
engines: {node: '>=18.17'}
|
|
||||||
|
|
||||||
util-deprecate@1.0.2:
|
|
||||||
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
|
|
||||||
|
|
||||||
winston-transport@4.9.0:
|
|
||||||
resolution: {integrity: sha512-8drMJ4rkgaPo1Me4zD/3WLfI/zPdA9o2IipKODunnGDcuqbHwjsbB79ylv04LCGGzU0xQ6vTznOMpQGaLhhm6A==}
|
|
||||||
engines: {node: '>= 12.0.0'}
|
|
||||||
|
|
||||||
winston@3.17.0:
|
|
||||||
resolution: {integrity: sha512-DLiFIXYC5fMPxaRg832S6F5mJYvePtmO5G9v9IgUFPhXm9/GkXarH/TUrBAVzhTCzAj9anE/+GjrgXp/54nOgw==}
|
|
||||||
engines: {node: '>= 12.0.0'}
|
|
||||||
|
|
||||||
ws@8.18.0:
|
|
||||||
resolution: {integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==}
|
|
||||||
engines: {node: '>=10.0.0'}
|
|
||||||
peerDependencies:
|
|
||||||
bufferutil: ^4.0.1
|
|
||||||
utf-8-validate: '>=5.0.2'
|
|
||||||
peerDependenciesMeta:
|
|
||||||
bufferutil:
|
|
||||||
optional: true
|
|
||||||
utf-8-validate:
|
|
||||||
optional: true
|
|
||||||
|
|
||||||
snapshots:
|
|
||||||
|
|
||||||
'@apidevtools/json-schema-ref-parser@11.7.2':
|
|
||||||
dependencies:
|
|
||||||
'@jsdevtools/ono': 7.1.3
|
|
||||||
'@types/json-schema': 7.0.15
|
|
||||||
js-yaml: 4.1.0
|
|
||||||
|
|
||||||
'@colors/colors@1.6.0': {}
|
|
||||||
|
|
||||||
'@dabh/diagnostics@2.0.3':
|
|
||||||
dependencies:
|
|
||||||
colorspace: 1.1.4
|
|
||||||
enabled: 2.0.0
|
|
||||||
kuler: 2.0.0
|
|
||||||
|
|
||||||
'@discordjs/builders@1.9.0':
|
|
||||||
dependencies:
|
|
||||||
'@discordjs/formatters': 0.5.0
|
|
||||||
'@discordjs/util': 1.1.1
|
|
||||||
'@sapphire/shapeshift': 4.0.0
|
|
||||||
discord-api-types: 0.37.97
|
|
||||||
fast-deep-equal: 3.1.3
|
|
||||||
ts-mixer: 6.0.4
|
|
||||||
tslib: 2.8.1
|
|
||||||
|
|
||||||
'@discordjs/collection@1.5.3': {}
|
|
||||||
|
|
||||||
'@discordjs/collection@2.1.1': {}
|
|
||||||
|
|
||||||
'@discordjs/formatters@0.5.0':
|
|
||||||
dependencies:
|
|
||||||
discord-api-types: 0.37.97
|
|
||||||
|
|
||||||
'@discordjs/rest@2.4.0':
|
|
||||||
dependencies:
|
|
||||||
'@discordjs/collection': 2.1.1
|
|
||||||
'@discordjs/util': 1.1.1
|
|
||||||
'@sapphire/async-queue': 1.5.5
|
|
||||||
'@sapphire/snowflake': 3.5.3
|
|
||||||
'@vladfrangu/async_event_emitter': 2.4.6
|
|
||||||
discord-api-types: 0.37.97
|
|
||||||
magic-bytes.js: 1.10.0
|
|
||||||
tslib: 2.8.1
|
|
||||||
undici: 6.19.8
|
|
||||||
|
|
||||||
'@discordjs/util@1.1.1': {}
|
|
||||||
|
|
||||||
'@discordjs/ws@1.1.1':
|
|
||||||
dependencies:
|
|
||||||
'@discordjs/collection': 2.1.1
|
|
||||||
'@discordjs/rest': 2.4.0
|
|
||||||
'@discordjs/util': 1.1.1
|
|
||||||
'@sapphire/async-queue': 1.5.5
|
|
||||||
'@types/ws': 8.5.13
|
|
||||||
'@vladfrangu/async_event_emitter': 2.4.6
|
|
||||||
discord-api-types: 0.37.83
|
|
||||||
tslib: 2.8.1
|
|
||||||
ws: 8.18.0
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- bufferutil
|
|
||||||
- utf-8-validate
|
|
||||||
|
|
||||||
'@jsdevtools/ono@7.1.3': {}
|
|
||||||
|
|
||||||
'@sapphire/async-queue@1.5.5': {}
|
|
||||||
|
|
||||||
'@sapphire/shapeshift@4.0.0':
|
|
||||||
dependencies:
|
|
||||||
fast-deep-equal: 3.1.3
|
|
||||||
lodash: 4.17.21
|
|
||||||
|
|
||||||
'@sapphire/snowflake@3.5.3': {}
|
|
||||||
|
|
||||||
'@types/json-schema@7.0.15': {}
|
|
||||||
|
|
||||||
'@types/lodash@4.17.13': {}
|
|
||||||
|
|
||||||
'@types/node@22.10.1':
|
|
||||||
dependencies:
|
|
||||||
undici-types: 6.20.0
|
|
||||||
|
|
||||||
'@types/triple-beam@1.3.5': {}
|
|
||||||
|
|
||||||
'@types/ws@8.5.13':
|
|
||||||
dependencies:
|
|
||||||
'@types/node': 22.10.1
|
|
||||||
|
|
||||||
'@vladfrangu/async_event_emitter@2.4.6': {}
|
|
||||||
|
|
||||||
argparse@2.0.1: {}
|
|
||||||
|
|
||||||
async@3.2.6: {}
|
|
||||||
|
|
||||||
color-convert@1.9.3:
|
|
||||||
dependencies:
|
|
||||||
color-name: 1.1.3
|
|
||||||
|
|
||||||
color-name@1.1.3: {}
|
|
||||||
|
|
||||||
color-name@1.1.4: {}
|
|
||||||
|
|
||||||
color-string@1.9.1:
|
|
||||||
dependencies:
|
|
||||||
color-name: 1.1.4
|
|
||||||
simple-swizzle: 0.2.2
|
|
||||||
|
|
||||||
color@3.2.1:
|
|
||||||
dependencies:
|
|
||||||
color-convert: 1.9.3
|
|
||||||
color-string: 1.9.1
|
|
||||||
|
|
||||||
colorspace@1.1.4:
|
|
||||||
dependencies:
|
|
||||||
color: 3.2.1
|
|
||||||
text-hex: 1.0.0
|
|
||||||
|
|
||||||
discord-api-types@0.37.100: {}
|
|
||||||
|
|
||||||
discord-api-types@0.37.83: {}
|
|
||||||
|
|
||||||
discord-api-types@0.37.97: {}
|
|
||||||
|
|
||||||
discord.js@14.16.3:
|
|
||||||
dependencies:
|
|
||||||
'@discordjs/builders': 1.9.0
|
|
||||||
'@discordjs/collection': 1.5.3
|
|
||||||
'@discordjs/formatters': 0.5.0
|
|
||||||
'@discordjs/rest': 2.4.0
|
|
||||||
'@discordjs/util': 1.1.1
|
|
||||||
'@discordjs/ws': 1.1.1
|
|
||||||
'@sapphire/snowflake': 3.5.3
|
|
||||||
discord-api-types: 0.37.100
|
|
||||||
fast-deep-equal: 3.1.3
|
|
||||||
lodash.snakecase: 4.1.1
|
|
||||||
tslib: 2.8.1
|
|
||||||
undici: 6.19.8
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- bufferutil
|
|
||||||
- utf-8-validate
|
|
||||||
|
|
||||||
enabled@2.0.0: {}
|
|
||||||
|
|
||||||
fast-deep-equal@3.1.3: {}
|
|
||||||
|
|
||||||
fast-xml-parser@4.5.0:
|
|
||||||
dependencies:
|
|
||||||
strnum: 1.0.5
|
|
||||||
|
|
||||||
fdir@6.4.2(picomatch@4.0.2):
|
|
||||||
optionalDependencies:
|
|
||||||
picomatch: 4.0.2
|
|
||||||
|
|
||||||
fecha@4.2.3: {}
|
|
||||||
|
|
||||||
fn.name@1.1.0: {}
|
|
||||||
|
|
||||||
inherits@2.0.4: {}
|
|
||||||
|
|
||||||
is-arrayish@0.3.2: {}
|
|
||||||
|
|
||||||
is-extglob@2.1.1: {}
|
|
||||||
|
|
||||||
is-glob@4.0.3:
|
|
||||||
dependencies:
|
|
||||||
is-extglob: 2.1.1
|
|
||||||
|
|
||||||
is-stream@2.0.1: {}
|
|
||||||
|
|
||||||
js-yaml@4.1.0:
|
|
||||||
dependencies:
|
|
||||||
argparse: 2.0.1
|
|
||||||
|
|
||||||
json-schema-to-typescript@15.0.3:
|
|
||||||
dependencies:
|
|
||||||
'@apidevtools/json-schema-ref-parser': 11.7.2
|
|
||||||
'@types/json-schema': 7.0.15
|
|
||||||
'@types/lodash': 4.17.13
|
|
||||||
is-glob: 4.0.3
|
|
||||||
js-yaml: 4.1.0
|
|
||||||
lodash: 4.17.21
|
|
||||||
minimist: 1.2.8
|
|
||||||
prettier: 3.4.1
|
|
||||||
tinyglobby: 0.2.10
|
|
||||||
|
|
||||||
kuler@2.0.0: {}
|
|
||||||
|
|
||||||
lodash.snakecase@4.1.1: {}
|
|
||||||
|
|
||||||
lodash@4.17.21: {}
|
|
||||||
|
|
||||||
logform@2.7.0:
|
|
||||||
dependencies:
|
|
||||||
'@colors/colors': 1.6.0
|
|
||||||
'@types/triple-beam': 1.3.5
|
|
||||||
fecha: 4.2.3
|
|
||||||
ms: 2.1.3
|
|
||||||
safe-stable-stringify: 2.5.0
|
|
||||||
triple-beam: 1.4.1
|
|
||||||
|
|
||||||
magic-bytes.js@1.10.0: {}
|
|
||||||
|
|
||||||
minimist@1.2.8: {}
|
|
||||||
|
|
||||||
ms@2.1.3: {}
|
|
||||||
|
|
||||||
one-time@1.0.0:
|
|
||||||
dependencies:
|
|
||||||
fn.name: 1.1.0
|
|
||||||
|
|
||||||
picomatch@4.0.2: {}
|
|
||||||
|
|
||||||
prettier@3.4.1: {}
|
|
||||||
|
|
||||||
readable-stream@3.6.2:
|
|
||||||
dependencies:
|
|
||||||
inherits: 2.0.4
|
|
||||||
string_decoder: 1.3.0
|
|
||||||
util-deprecate: 1.0.2
|
|
||||||
|
|
||||||
safe-buffer@5.2.1: {}
|
|
||||||
|
|
||||||
safe-stable-stringify@2.5.0: {}
|
|
||||||
|
|
||||||
simple-swizzle@0.2.2:
|
|
||||||
dependencies:
|
|
||||||
is-arrayish: 0.3.2
|
|
||||||
|
|
||||||
stack-trace@0.0.10: {}
|
|
||||||
|
|
||||||
string_decoder@1.3.0:
|
|
||||||
dependencies:
|
|
||||||
safe-buffer: 5.2.1
|
|
||||||
|
|
||||||
strnum@1.0.5: {}
|
|
||||||
|
|
||||||
text-hex@1.0.0: {}
|
|
||||||
|
|
||||||
tinyglobby@0.2.10:
|
|
||||||
dependencies:
|
|
||||||
fdir: 6.4.2(picomatch@4.0.2)
|
|
||||||
picomatch: 4.0.2
|
|
||||||
|
|
||||||
triple-beam@1.4.1: {}
|
|
||||||
|
|
||||||
ts-mixer@6.0.4: {}
|
|
||||||
|
|
||||||
tslib@2.8.1: {}
|
|
||||||
|
|
||||||
typescript@5.7.2: {}
|
|
||||||
|
|
||||||
undici-types@6.20.0: {}
|
|
||||||
|
|
||||||
undici@6.19.8: {}
|
|
||||||
|
|
||||||
util-deprecate@1.0.2: {}
|
|
||||||
|
|
||||||
winston-transport@4.9.0:
|
|
||||||
dependencies:
|
|
||||||
logform: 2.7.0
|
|
||||||
readable-stream: 3.6.2
|
|
||||||
triple-beam: 1.4.1
|
|
||||||
|
|
||||||
winston@3.17.0:
|
|
||||||
dependencies:
|
|
||||||
'@colors/colors': 1.6.0
|
|
||||||
'@dabh/diagnostics': 2.0.3
|
|
||||||
async: 3.2.6
|
|
||||||
is-stream: 2.0.1
|
|
||||||
logform: 2.7.0
|
|
||||||
one-time: 1.0.0
|
|
||||||
readable-stream: 3.6.2
|
|
||||||
safe-stable-stringify: 2.5.0
|
|
||||||
stack-trace: 0.0.10
|
|
||||||
triple-beam: 1.4.1
|
|
||||||
winston-transport: 4.9.0
|
|
||||||
|
|
||||||
ws@8.18.0: {}
|
|
||||||
|
|
@ -1,4 +1,5 @@
|
||||||
export default interface IDiscordConfiguration {
|
export default interface IDiscordConfiguration {
|
||||||
|
guildId: string;
|
||||||
channelId: string;
|
channelId: string;
|
||||||
botToken: string;
|
botToken: string;
|
||||||
}
|
}
|
||||||
|
|
@ -1,7 +1,5 @@
|
||||||
import ITranslationDiscordEmbed from "./ITranslationDiscordEmbed";
|
import ITranslationDiscordEmbed from "./ITranslationDiscordEmbed";
|
||||||
import ITranslationCommon from "./ITranslationCommon";
|
|
||||||
|
|
||||||
export default interface ITranslation {
|
export default interface ITranslation {
|
||||||
discordEmbed: ITranslationDiscordEmbed;
|
discordEmbed: ITranslationDiscordEmbed;
|
||||||
common: ITranslationCommon;
|
|
||||||
}
|
}
|
||||||
|
|
@ -1,14 +0,0 @@
|
||||||
export default interface ITranslationCommon {
|
|
||||||
monthJanuary: string;
|
|
||||||
monthFebruary: string;
|
|
||||||
monthMarch: string;
|
|
||||||
monthApril: string;
|
|
||||||
monthMay: string;
|
|
||||||
monthJune: string;
|
|
||||||
monthJuly: string;
|
|
||||||
monthAugust: string;
|
|
||||||
monthSeptember: string;
|
|
||||||
monthOctober: string;
|
|
||||||
monthNovember: string;
|
|
||||||
monthDecember: string;
|
|
||||||
}
|
|
||||||
|
|
@ -4,8 +4,6 @@ export default interface ITranslationDiscordEmbed {
|
||||||
descriptionOffline: string;
|
descriptionOffline: string;
|
||||||
descriptionUnknown: string;
|
descriptionUnknown: string;
|
||||||
titleServerName: string;
|
titleServerName: string;
|
||||||
titleServerMap: string;
|
|
||||||
titleServerMods: string;
|
|
||||||
titleServerPassword: string;
|
titleServerPassword: string;
|
||||||
titleServerTime: string;
|
titleServerTime: string;
|
||||||
titlePlayerCount: string;
|
titlePlayerCount: string;
|
||||||
|
|
|
||||||
|
|
@ -1,5 +0,0 @@
|
||||||
export default interface IMod {
|
|
||||||
name: string;
|
|
||||||
author: string;
|
|
||||||
version: string;
|
|
||||||
}
|
|
||||||
|
|
@ -2,46 +2,9 @@ import {Client, IntentsBitField} from 'discord.js';
|
||||||
import Configuration from "./Services/Configuration";
|
import Configuration from "./Services/Configuration";
|
||||||
import Logging from "./Services/Logging";
|
import Logging from "./Services/Logging";
|
||||||
import DiscordService from "./Services/DiscordEmbed";
|
import DiscordService from "./Services/DiscordEmbed";
|
||||||
import VersionChecker from './Services/VersionChecker';
|
|
||||||
|
|
||||||
// Create a new logger instance and configuration instance
|
|
||||||
const appLogger = Logging.getLogger();
|
const appLogger = Logging.getLogger();
|
||||||
const appConfig: Configuration = new Configuration();
|
const appConfig: Configuration = new Configuration();
|
||||||
|
|
||||||
// Log the application start and version
|
|
||||||
const packageJson = require('../package.json');
|
|
||||||
appLogger.info(`Starting | App: ${packageJson.name} | Version: ${packageJson.version}`);
|
|
||||||
appLogger.info(`----------------------------------------------------`);
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if the configuration is valid and exit the application if it is not
|
|
||||||
*/
|
|
||||||
if(!appConfig.isConfigurationValid()) {
|
|
||||||
appLogger.error("Configuration is not valid. Exiting application.");
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check the version of the bot and log if it is up to date
|
|
||||||
*/
|
|
||||||
const versionChecker = new VersionChecker();
|
|
||||||
versionChecker.checkVersionIsUpdated().then((isUpToDate: boolean): void => {
|
|
||||||
if (!isUpToDate) {
|
|
||||||
appLogger.warn(`====================================================`);
|
|
||||||
appLogger.warn(`====================================================`);
|
|
||||||
appLogger.warn(`The bot is not up to date. Please update it soon.`);
|
|
||||||
appLogger.warn(`Use the command 'git pull && docker compose up -d --build' to update the bot.`);
|
|
||||||
appLogger.warn(`====================================================`);
|
|
||||||
appLogger.warn(`====================================================`);
|
|
||||||
|
|
||||||
} else {
|
|
||||||
appLogger.info(`The bot is up to date. No update needed.`);
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Create a new discord client instance
|
|
||||||
*/
|
|
||||||
const discordClient = new Client({
|
const discordClient = new Client({
|
||||||
intents: [IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMessages]
|
intents: [IntentsBitField.Flags.Guilds, IntentsBitField.Flags.GuildMessages]
|
||||||
});
|
});
|
||||||
|
|
@ -54,19 +17,7 @@ discordClient.login(appConfig.discord.botToken).then(() => {
|
||||||
appLogger.info(`Login successful to discord with token`);
|
appLogger.info(`Login successful to discord with token`);
|
||||||
});
|
});
|
||||||
|
|
||||||
/**
|
|
||||||
* Start the DiscordService and restart it if an error occurred
|
|
||||||
*/
|
|
||||||
async function startDiscordService(): Promise<void> {
|
|
||||||
try {
|
|
||||||
new DiscordService(discordClient);
|
|
||||||
} catch (exception) {
|
|
||||||
appLogger.error(`Restarting the discord service, an error occurred`, exception);
|
|
||||||
startDiscordService();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
discordClient.on('ready', () => {
|
discordClient.on('ready', () => {
|
||||||
appLogger.info(`Discord client ready. Logged in as ${discordClient.user?.username}!`);
|
appLogger.info(`Discord client ready. Logged in as ${discordClient.user?.username}!`);
|
||||||
startDiscordService();
|
new DiscordService(discordClient);
|
||||||
});
|
});
|
||||||
|
|
@ -2,130 +2,19 @@ import IDiscordConfiguration from "../Interfaces/Configuration/IDiscordConfigura
|
||||||
import IApplicationConfiguration from "../Interfaces/Configuration/IApplicationConfiguration";
|
import IApplicationConfiguration from "../Interfaces/Configuration/IApplicationConfiguration";
|
||||||
import IConfiguration from "../Interfaces/Configuration/IConfiguration";
|
import IConfiguration from "../Interfaces/Configuration/IConfiguration";
|
||||||
import ITranslation from "../Interfaces/Configuration/ITranslation";
|
import ITranslation from "../Interfaces/Configuration/ITranslation";
|
||||||
import Logging from "./Logging";
|
|
||||||
import {Logger} from "winston";
|
|
||||||
|
|
||||||
export default class Configuration implements IConfiguration{
|
export default class Configuration implements IConfiguration{
|
||||||
private readonly logger: Logger;
|
|
||||||
public readonly discord: IDiscordConfiguration;
|
public readonly discord: IDiscordConfiguration;
|
||||||
public readonly application: IApplicationConfiguration;
|
public readonly application: IApplicationConfiguration;
|
||||||
public readonly translation: ITranslation;
|
public readonly translation: ITranslation;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
this.logger = Logging.getLogger();
|
let config = require('../../config.json');
|
||||||
try {
|
this.discord = config.discord;
|
||||||
let config = require('../../config.json');
|
this.application = config.application;
|
||||||
this.discord = config.discord;
|
this.translation = config.translation;
|
||||||
this.application = config.application;
|
|
||||||
this.translation = config.translation;
|
|
||||||
} catch (exception) {
|
|
||||||
this.logger.error("Error while loading configuration file, please check if the configuration file exists and is valid.");
|
|
||||||
process.exit(1);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the value is empty or undefined
|
|
||||||
* @param value
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
private isValueEmptyOrUndefined(value: any): boolean {
|
|
||||||
return value == null || value == "" || value == undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns true if the value is undefined
|
|
||||||
* @param value
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
private isValueUndefined(value: any): boolean {
|
|
||||||
return value == undefined;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validates the discord configuration and returns true if the configuration is valid
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
private validateDiscordConfiguration(): boolean {
|
|
||||||
return !(this.isValueEmptyOrUndefined(this.discord?.botToken) || this.isValueEmptyOrUndefined(this.discord?.channelId));
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validates the application configuration and returns true if the configuration is valid
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
private validateApplicationConfiguration(): boolean {
|
|
||||||
return !(
|
|
||||||
this.isValueUndefined(this.application?.serverPassword)
|
|
||||||
|| this.isValueEmptyOrUndefined(this.application?.serverStatsUrl)
|
|
||||||
|| this.isValueEmptyOrUndefined(this.application?.serverMapUrl)
|
|
||||||
|| this.isValueEmptyOrUndefined(this.application?.updateIntervalSeconds)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validates the translation configuration and returns true if the configuration is valid
|
|
||||||
* @private
|
|
||||||
*/
|
|
||||||
private validateTranslationConfiguration(): boolean {
|
|
||||||
return !(
|
|
||||||
this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.title)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.descriptionOnline)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.descriptionOffline)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.descriptionUnknown)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.titleServerName)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.titleServerPassword)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.titleServerTime)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.titleServerMap)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.titleServerMods)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.titlePlayerCount)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.discordEmbed?.noPlayersOnline)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthJanuary)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthFebruary)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthMarch)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthApril)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthMay)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthJune)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthJuly)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthAugust)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthSeptember)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthOctober)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthNovember)
|
|
||||||
|| this.isValueEmptyOrUndefined(this?.translation?.common?.monthDecember)
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Validates the configuration file and returns true if the configuration is valid
|
|
||||||
* @returns boolean True if the configuration is valid
|
|
||||||
*/
|
|
||||||
public isConfigurationValid(): boolean {
|
|
||||||
if(!this.validateDiscordConfiguration()) {
|
|
||||||
this.logger.error("Discord configuration is not valid. Please check your configuration file.");
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
this.logger.info("Discord configuration is valid.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!this.validateApplicationConfiguration()) {
|
|
||||||
this.logger.error("Application configuration is not valid. Please check your configuration file.");
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
this.logger.info("Application configuration is valid.");
|
|
||||||
}
|
|
||||||
|
|
||||||
if(!this.validateTranslationConfiguration()) {
|
|
||||||
this.logger.error("Translation configuration is not valid. Please check your configuration file.");
|
|
||||||
return false;
|
|
||||||
} else {
|
|
||||||
this.logger.info("Translation configuration is valid.");
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the configuration object
|
|
||||||
*/
|
|
||||||
public static getConfiguration(): IConfiguration {
|
public static getConfiguration(): IConfiguration {
|
||||||
return new Configuration();
|
return new Configuration();
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -41,30 +41,15 @@ export default class DiscordEmbed {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
this.discordAppClient.channels.fetch(this.appConfiguration.discord.channelId as Snowflake).then(async channel => {
|
this.discordAppClient.channels.fetch(this.appConfiguration.discord.channelId as Snowflake).then(async channel => {
|
||||||
/**
|
|
||||||
* Send the initial message to the channel (if the first message id is not set) or
|
|
||||||
* the message is meanwhile deleted
|
|
||||||
* @param embedMessage
|
|
||||||
*/
|
|
||||||
let sendInitialMessage = (embedMessage: EmbedBuilder) => {
|
|
||||||
// noinspection JSAnnotator
|
|
||||||
(channel as TextChannel).send({embeds: [embedMessage]}).then(message => {
|
|
||||||
this.firstMessageId = message.id;
|
|
||||||
});
|
|
||||||
};
|
|
||||||
|
|
||||||
this.generateEmbedFromStatusFeed(this.serverStatsFeed).then(embedMessage => {
|
this.generateEmbedFromStatusFeed(this.serverStatsFeed).then(embedMessage => {
|
||||||
if (this.firstMessageId !== null) {
|
if (this.firstMessageId !== null) {
|
||||||
(channel as TextChannel).messages.fetch(this.firstMessageId).then(message => {
|
(channel as TextChannel).messages.fetch(this.firstMessageId).then(message => {
|
||||||
this.appLogger.info(`Message found, editing message with new embed`);
|
|
||||||
message.edit({embeds: [embedMessage]});
|
message.edit({embeds: [embedMessage]});
|
||||||
}).catch(() => {
|
|
||||||
this.appLogger.warn('Message not found, sending new message');
|
|
||||||
sendInitialMessage(embedMessage);
|
|
||||||
});
|
});
|
||||||
} else {
|
} else {
|
||||||
this.appLogger.info(`No message found, sending new message`);
|
(channel as TextChannel).send({embeds: [embedMessage]}).then(message => {
|
||||||
sendInitialMessage(embedMessage);
|
this.firstMessageId = message.id;
|
||||||
|
})
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
});
|
});
|
||||||
|
|
@ -92,16 +77,6 @@ export default class DiscordEmbed {
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Truncates a string at a given length
|
|
||||||
* @param text The input text to truncate
|
|
||||||
* @param maxLength The allowed characters until truncation
|
|
||||||
* @returns The truncated string
|
|
||||||
*/
|
|
||||||
private async truncateText(text: string, maxLength = 1024): Promise<string> {
|
|
||||||
return text.length > maxLength ? text.slice(0, maxLength - 3) + '...' : text;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Send server stats embed in a channel
|
* Send server stats embed in a channel
|
||||||
* @param serverStats
|
* @param serverStats
|
||||||
|
|
@ -112,49 +87,33 @@ export default class DiscordEmbed {
|
||||||
|
|
||||||
embed.setTitle(config.translation.discordEmbed.title);
|
embed.setTitle(config.translation.discordEmbed.title);
|
||||||
if (!serverStats.isOnline()) {
|
if (!serverStats.isOnline()) {
|
||||||
embed.setColor(0xCA0000);
|
|
||||||
embed.setDescription(config.translation.discordEmbed.descriptionOffline);
|
embed.setDescription(config.translation.discordEmbed.descriptionOffline);
|
||||||
} else if (serverStats.isFetching()) {
|
} else if (serverStats.isFetching()) {
|
||||||
embed.setDescription(config.translation.discordEmbed.descriptionUnknown);
|
embed.setDescription(config.translation.discordEmbed.descriptionUnknown);
|
||||||
} else {
|
} else {
|
||||||
embed.setColor(0x00CA00);
|
|
||||||
embed.setDescription(config.translation.discordEmbed.descriptionOnline);
|
embed.setDescription(config.translation.discordEmbed.descriptionOnline);
|
||||||
embed.setTimestamp(new Date());
|
embed.setTimestamp(new Date());
|
||||||
embed.setThumbnail(config.application.serverMapUrl);
|
embed.setThumbnail(config.application.serverMapUrl);
|
||||||
|
|
||||||
let playerListString: string;
|
let playerListString: string = '';
|
||||||
let playerListTitleString = `${config.translation.discordEmbed.titlePlayerCount} (${serverStats.getPlayerCount()??0}/${serverStats.getMaxPlayerCount()??0}):`;
|
|
||||||
|
|
||||||
if(serverStats.getPlayerList().length === 0) {
|
if(serverStats.getPlayerList().length === 0) {
|
||||||
playerListString = config.translation.discordEmbed.noPlayersOnline;
|
playerListString = config.translation.discordEmbed.noPlayersOnline;
|
||||||
} else {
|
} else {
|
||||||
playerListString = serverStats.getPlayerList().map(p => p.username).join(', ');
|
playerListString = serverStats.getPlayerList().map(p => p.username).join(', ');
|
||||||
}
|
}
|
||||||
|
|
||||||
let serverPassword = config.application.serverPassword;
|
|
||||||
if(config.application.serverPassword == "") {
|
|
||||||
serverPassword = "-/-";
|
|
||||||
}
|
|
||||||
|
|
||||||
let serverMods = serverStats.getServerMods();
|
|
||||||
let serverModsText = "-/-";
|
|
||||||
if(serverMods.length > 0) {
|
|
||||||
serverModsText = await this.truncateText(serverMods.map(mod => `${mod.name}`).join(', '));
|
|
||||||
}
|
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
embed.addFields(
|
embed.addFields(
|
||||||
{name: config.translation.discordEmbed.titleServerName, value: serverStats.getServerName()},
|
{name: config.translation.discordEmbed.titleServerName, value: serverStats.getServerName()},
|
||||||
{name: config.translation.discordEmbed.titleServerPassword, value: serverPassword},
|
{name: config.translation.discordEmbed.titleServerPassword, value: config.application.serverPassword},
|
||||||
{name: config.translation.discordEmbed.titleServerTime, value: serverStats.getServerTime()},
|
{name: config.translation.discordEmbed.titleServerTime, value: serverStats.getServerTime()},
|
||||||
{name: config.translation.discordEmbed.titleServerMap, value: serverStats.getServerMap()},
|
|
||||||
{name: config.translation.discordEmbed.titleServerMods, value: serverModsText},
|
|
||||||
{
|
{
|
||||||
name: playerListTitleString,
|
name: `${config.translation.discordEmbed.titlePlayerCount} (${serverStats.getPlayerCount()}/${serverStats.getMaxPlayerCount()}):`,
|
||||||
value: playerListString
|
value: playerListString
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
this.appLogger.debug(embed);
|
||||||
return embed;
|
return embed;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
@ -5,12 +5,8 @@ export default class Logging {
|
||||||
return winston.createLogger({
|
return winston.createLogger({
|
||||||
level: 'info',
|
level: 'info',
|
||||||
format: winston.format.combine(
|
format: winston.format.combine(
|
||||||
winston.format.timestamp({
|
|
||||||
format: 'YYYY-MM-DD HH:mm:ss'
|
|
||||||
}),
|
|
||||||
winston.format.colorize(),
|
winston.format.colorize(),
|
||||||
winston.format.simple(),
|
winston.format.simple(),
|
||||||
winston.format.printf(info => `${info.timestamp} ${info.level}: ${info.message}`)
|
|
||||||
),
|
),
|
||||||
transports: [
|
transports: [
|
||||||
new winston.transports.Console(),
|
new winston.transports.Console(),
|
||||||
|
|
|
||||||
|
|
@ -3,8 +3,6 @@ import Configuration from "./Configuration";
|
||||||
import {XMLParser} from "fast-xml-parser";
|
import {XMLParser} from "fast-xml-parser";
|
||||||
import Logging from "./Logging";
|
import Logging from "./Logging";
|
||||||
import IPlayer from "../Interfaces/Feed/IPlayer";
|
import IPlayer from "../Interfaces/Feed/IPlayer";
|
||||||
import IConfiguration from "../Interfaces/Configuration/IConfiguration";
|
|
||||||
import IMod from "../Interfaces/Feed/IMod";
|
|
||||||
|
|
||||||
export const CONNECTION_REFUSED = 'ECONNREFUSED';
|
export const CONNECTION_REFUSED = 'ECONNREFUSED';
|
||||||
export const NOT_FOUND = 'ENOTFOUND';
|
export const NOT_FOUND = 'ENOTFOUND';
|
||||||
|
|
@ -104,7 +102,7 @@ export default class ServerStatusFeed {
|
||||||
* @returns {string} The server map name
|
* @returns {string} The server map name
|
||||||
*/
|
*/
|
||||||
public getServerMap(): string {
|
public getServerMap(): string {
|
||||||
return <string>this.getServerStats()?.Server.mapName;
|
return <string>this.getServerStats()?.Server.map;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
@ -119,24 +117,6 @@ export default class ServerStatusFeed {
|
||||||
return dayTime / (60 * 60 * 1000) + 0.0001;
|
return dayTime / (60 * 60 * 1000) + 0.0001;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the server mods from the server stats feed
|
|
||||||
* @returns {IMod[]} The server mods as an array of IMod objects
|
|
||||||
*/
|
|
||||||
public getServerMods(): IMod[] {
|
|
||||||
let modList = this.getServerStats()?.Server?.Mods?.Mod;
|
|
||||||
if(modList === undefined || !Array.isArray(modList) || modList == null) {
|
|
||||||
return [];
|
|
||||||
}
|
|
||||||
return modList.map((mod: any) => {
|
|
||||||
return {
|
|
||||||
name: mod['#text'],
|
|
||||||
author: mod.author,
|
|
||||||
version: mod.version
|
|
||||||
} as IMod;
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the server time in the format HH:MM
|
* Returns the server time in the format HH:MM
|
||||||
* @returns {string} The server time in the format HH:MM
|
* @returns {string} The server time in the format HH:MM
|
||||||
|
|
@ -161,18 +141,18 @@ export default class ServerStatusFeed {
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the server player count
|
* Returns the server player count
|
||||||
* @returns {number | null | undefined} The server player count
|
* @returns {number} The server player count
|
||||||
*/
|
*/
|
||||||
public getPlayerCount(): number | null | undefined {
|
public getPlayerCount(): number {
|
||||||
return <number>this.getServerStats()?.Server?.Slots?.numUsed;
|
return <number>this.getServerStats()?.Server.Slots.numUsed;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the server player count
|
* Returns the server player count
|
||||||
* @returns {number | null | undefined} The server player count
|
* @returns {number} The server player count
|
||||||
*/
|
*/
|
||||||
public getMaxPlayerCount(): number | null | undefined {
|
public getMaxPlayerCount(): number {
|
||||||
return <number>this.getServerStats()?.Server?.Slots?.capacity;
|
return <number>this.getServerStats()?.Server.Slots.capacity;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -1,41 +0,0 @@
|
||||||
export default class VersionChecker {
|
|
||||||
private readonly localPackageVersion: string;
|
|
||||||
private readonly versionUrl: string = "https://raw.githubusercontent.com/cloudmaker97/FS25-Discord-Bot/refs/heads/main/package.json";
|
|
||||||
|
|
||||||
constructor() {
|
|
||||||
this.localPackageVersion = require('../../package.json').version;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if the version of the bot is up to date
|
|
||||||
*/
|
|
||||||
public async checkVersionIsUpdated(): Promise<boolean> {
|
|
||||||
const latestVersion = await this.getLatestReleasedVersion();
|
|
||||||
return this.isNewerVersion(latestVersion, this.localPackageVersion);
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get the latest released version of the bot from the github repository
|
|
||||||
*/
|
|
||||||
public async getLatestReleasedVersion(): Promise<string> {
|
|
||||||
const response = await fetch(this.versionUrl);
|
|
||||||
const latestPackage = await response.text();
|
|
||||||
const latestVersion = JSON.parse(latestPackage)?.version;
|
|
||||||
return latestVersion;
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Check if the latest version is newer than the current version
|
|
||||||
*/
|
|
||||||
public isNewerVersion(latestVersion: string, currentVersion: string) {
|
|
||||||
const v1Parts: number[] = latestVersion.split('.').map(Number);
|
|
||||||
const v2Parts: number[] = currentVersion.split('.').map(Number);
|
|
||||||
for (let i = 0; i < Math.max(v1Parts.length, v2Parts.length); i++) {
|
|
||||||
const part1 = v1Parts[i] || 0;
|
|
||||||
const part2 = v2Parts[i] || 0;
|
|
||||||
if (part1 > part2) return false;
|
|
||||||
if (part1 < part2) return true;
|
|
||||||
}
|
|
||||||
return true;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
Loading…
Reference in a new issue