mirror of
https://github.com/cloudmaker97/FS25-Discord-Bot.git
synced 2025-12-06 08:28:33 +00:00
Added I18N support for setting languages from the config
This commit is contained in:
parent
35c887383a
commit
721b9f3045
7 changed files with 48 additions and 12 deletions
|
|
@ -9,5 +9,18 @@
|
|||
"guildId": "DiscordServerId_12345",
|
||||
"channelId": "DiscordChannelId_12345",
|
||||
"botToken": "DiscordSecretBotToken_XYZ"
|
||||
},
|
||||
"translation": {
|
||||
"discordEmbed": {
|
||||
"title": "Server Status",
|
||||
"descriptionOnline": "Server is online",
|
||||
"descriptionOffline": "Server is offline",
|
||||
"descriptionUnknown": "Server status fetching",
|
||||
"titleServerName": "Server name",
|
||||
"titleServerPassword": "Server password",
|
||||
"titleServerTime": "Server time",
|
||||
"titlePlayerCount": "Players online",
|
||||
"noPlayersOnline": "No players online"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -1,6 +1,6 @@
|
|||
{
|
||||
"name": "ls25discord",
|
||||
"version": "0.0.1",
|
||||
"version": "0.1.0",
|
||||
"description": "A simple discord bot for farming simulator 25",
|
||||
"main": "source/Main.ts",
|
||||
"scripts": {
|
||||
|
|
|
|||
|
|
@ -1,7 +1,9 @@
|
|||
import IDiscordConfiguration from "./IDiscordConfiguration";
|
||||
import IApplicationConfiguration from "./IApplicationConfiguration";
|
||||
import ITranslation from "./ITranslation";
|
||||
|
||||
export default interface IConfiguration {
|
||||
discord: IDiscordConfiguration;
|
||||
application: IApplicationConfiguration;
|
||||
translation: ITranslation;
|
||||
}
|
||||
5
source/Interfaces/Configuration/ITranslation.ts
Normal file
5
source/Interfaces/Configuration/ITranslation.ts
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
import ITranslationDiscordEmbed from "./ITranslationDiscordEmbed";
|
||||
|
||||
export default interface ITranslation {
|
||||
discordEmbed: ITranslationDiscordEmbed;
|
||||
}
|
||||
11
source/Interfaces/Configuration/ITranslationDiscordEmbed.ts
Normal file
11
source/Interfaces/Configuration/ITranslationDiscordEmbed.ts
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
export default interface ITranslationDiscordEmbed {
|
||||
title: string;
|
||||
descriptionOnline: string;
|
||||
descriptionOffline: string;
|
||||
descriptionUnknown: string;
|
||||
titleServerName: string;
|
||||
titleServerPassword: string;
|
||||
titleServerTime: string;
|
||||
titlePlayerCount: string;
|
||||
noPlayersOnline: string;
|
||||
}
|
||||
|
|
@ -1,15 +1,18 @@
|
|||
import IDiscordConfiguration from "../Interfaces/Configuration/IDiscordConfiguration";
|
||||
import IApplicationConfiguration from "../Interfaces/Configuration/IApplicationConfiguration";
|
||||
import IConfiguration from "../Interfaces/Configuration/IConfiguration";
|
||||
import ITranslation from "../Interfaces/Configuration/ITranslation";
|
||||
|
||||
export default class Configuration implements IConfiguration{
|
||||
public readonly discord: IDiscordConfiguration;
|
||||
public readonly application: IApplicationConfiguration;
|
||||
public readonly translation: ITranslation;
|
||||
|
||||
constructor() {
|
||||
let config = require('../../config.json');
|
||||
this.discord = config.discord;
|
||||
this.application = config.application;
|
||||
this.translation = config.translation;
|
||||
}
|
||||
|
||||
public static getConfiguration(): IConfiguration {
|
||||
|
|
|
|||
|
|
@ -83,30 +83,32 @@ export default class DiscordEmbed {
|
|||
*/
|
||||
private async generateEmbedFromStatusFeed(serverStats: ServerStatusFeed): Promise<EmbedBuilder> {
|
||||
let embed = new EmbedBuilder();
|
||||
embed.setTitle('Server Status');
|
||||
let config = this.appConfiguration;
|
||||
|
||||
embed.setTitle(config.translation.discordEmbed.title);
|
||||
if (!serverStats.isOnline()) {
|
||||
embed.setDescription('Der Server ist aktuell offline.');
|
||||
embed.setDescription(config.translation.discordEmbed.descriptionOffline);
|
||||
} else if (serverStats.isFetching()) {
|
||||
embed.setDescription('Der Serverstatus wird aktuell abgefragt...');
|
||||
embed.setDescription(config.translation.discordEmbed.descriptionUnknown);
|
||||
} else {
|
||||
embed.setDescription(`Der Server ist aktuell ${serverStats.isOnline() ? 'online' : 'offline'}`);
|
||||
embed.setTimestamp();
|
||||
embed.setThumbnail(this.appConfiguration.application.serverMapUrl);
|
||||
embed.setDescription(config.translation.discordEmbed.descriptionOnline);
|
||||
embed.setTimestamp(new Date());
|
||||
embed.setThumbnail(config.application.serverMapUrl);
|
||||
|
||||
let playerListString: string = '';
|
||||
if(serverStats.getPlayerList().length === 0) {
|
||||
playerListString = 'Keine Spieler online';
|
||||
playerListString = config.translation.discordEmbed.noPlayersOnline;
|
||||
} else {
|
||||
playerListString = serverStats.getPlayerList().map(p => p.username).join(', ');
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
embed.addFields(
|
||||
{name: 'Name:', value: serverStats.getServerName()},
|
||||
{name: 'Passwort:', value: this.appConfiguration.application.serverPassword},
|
||||
{name: 'Uhrzeit im Spiel:', value: serverStats.getServerTime()},
|
||||
{name: config.translation.discordEmbed.titleServerName, value: serverStats.getServerName()},
|
||||
{name: config.translation.discordEmbed.titleServerPassword, value: config.application.serverPassword},
|
||||
{name: config.translation.discordEmbed.titleServerTime, value: serverStats.getServerTime()},
|
||||
{
|
||||
name: `Spieler online (${serverStats.getPlayerCount()}/${serverStats.getMaxPlayerCount()}):`,
|
||||
name: `${config.translation.discordEmbed.titlePlayerCount} (${serverStats.getPlayerCount()}/${serverStats.getMaxPlayerCount()}):`,
|
||||
value: playerListString
|
||||
},
|
||||
);
|
||||
|
|
|
|||
Loading…
Reference in a new issue