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",
|
"guildId": "DiscordServerId_12345",
|
||||||
"channelId": "DiscordChannelId_12345",
|
"channelId": "DiscordChannelId_12345",
|
||||||
"botToken": "DiscordSecretBotToken_XYZ"
|
"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",
|
"name": "ls25discord",
|
||||||
"version": "0.0.1",
|
"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": {
|
||||||
|
|
|
||||||
|
|
@ -1,7 +1,9 @@
|
||||||
import IDiscordConfiguration from "./IDiscordConfiguration";
|
import IDiscordConfiguration from "./IDiscordConfiguration";
|
||||||
import IApplicationConfiguration from "./IApplicationConfiguration";
|
import IApplicationConfiguration from "./IApplicationConfiguration";
|
||||||
|
import ITranslation from "./ITranslation";
|
||||||
|
|
||||||
export default interface IConfiguration {
|
export default interface IConfiguration {
|
||||||
discord: IDiscordConfiguration;
|
discord: IDiscordConfiguration;
|
||||||
application: IApplicationConfiguration;
|
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 IDiscordConfiguration from "../Interfaces/Configuration/IDiscordConfiguration";
|
||||||
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";
|
||||||
|
|
||||||
export default class Configuration implements IConfiguration{
|
export default class Configuration implements IConfiguration{
|
||||||
public readonly discord: IDiscordConfiguration;
|
public readonly discord: IDiscordConfiguration;
|
||||||
public readonly application: IApplicationConfiguration;
|
public readonly application: IApplicationConfiguration;
|
||||||
|
public readonly translation: ITranslation;
|
||||||
|
|
||||||
constructor() {
|
constructor() {
|
||||||
let config = require('../../config.json');
|
let config = require('../../config.json');
|
||||||
this.discord = config.discord;
|
this.discord = config.discord;
|
||||||
this.application = config.application;
|
this.application = config.application;
|
||||||
|
this.translation = config.translation;
|
||||||
}
|
}
|
||||||
|
|
||||||
public static getConfiguration(): IConfiguration {
|
public static getConfiguration(): IConfiguration {
|
||||||
|
|
|
||||||
|
|
@ -83,30 +83,32 @@ export default class DiscordEmbed {
|
||||||
*/
|
*/
|
||||||
private async generateEmbedFromStatusFeed(serverStats: ServerStatusFeed): Promise<EmbedBuilder> {
|
private async generateEmbedFromStatusFeed(serverStats: ServerStatusFeed): Promise<EmbedBuilder> {
|
||||||
let embed = new EmbedBuilder();
|
let embed = new EmbedBuilder();
|
||||||
embed.setTitle('Server Status');
|
let config = this.appConfiguration;
|
||||||
|
|
||||||
|
embed.setTitle(config.translation.discordEmbed.title);
|
||||||
if (!serverStats.isOnline()) {
|
if (!serverStats.isOnline()) {
|
||||||
embed.setDescription('Der Server ist aktuell offline.');
|
embed.setDescription(config.translation.discordEmbed.descriptionOffline);
|
||||||
} else if (serverStats.isFetching()) {
|
} else if (serverStats.isFetching()) {
|
||||||
embed.setDescription('Der Serverstatus wird aktuell abgefragt...');
|
embed.setDescription(config.translation.discordEmbed.descriptionUnknown);
|
||||||
} else {
|
} else {
|
||||||
embed.setDescription(`Der Server ist aktuell ${serverStats.isOnline() ? 'online' : 'offline'}`);
|
embed.setDescription(config.translation.discordEmbed.descriptionOnline);
|
||||||
embed.setTimestamp();
|
embed.setTimestamp(new Date());
|
||||||
embed.setThumbnail(this.appConfiguration.application.serverMapUrl);
|
embed.setThumbnail(config.application.serverMapUrl);
|
||||||
|
|
||||||
let playerListString: string = '';
|
let playerListString: string = '';
|
||||||
if(serverStats.getPlayerList().length === 0) {
|
if(serverStats.getPlayerList().length === 0) {
|
||||||
playerListString = 'Keine Spieler online';
|
playerListString = config.translation.discordEmbed.noPlayersOnline;
|
||||||
} else {
|
} else {
|
||||||
playerListString = serverStats.getPlayerList().map(p => p.username).join(', ');
|
playerListString = serverStats.getPlayerList().map(p => p.username).join(', ');
|
||||||
}
|
}
|
||||||
|
|
||||||
// @ts-ignore
|
// @ts-ignore
|
||||||
embed.addFields(
|
embed.addFields(
|
||||||
{name: 'Name:', value: serverStats.getServerName()},
|
{name: config.translation.discordEmbed.titleServerName, value: serverStats.getServerName()},
|
||||||
{name: 'Passwort:', value: this.appConfiguration.application.serverPassword},
|
{name: config.translation.discordEmbed.titleServerPassword, value: config.application.serverPassword},
|
||||||
{name: 'Uhrzeit im Spiel:', value: serverStats.getServerTime()},
|
{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
|
value: playerListString
|
||||||
},
|
},
|
||||||
);
|
);
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue