mirror of
https://github.com/cloudmaker97/FS25-Discord-Bot.git
synced 2025-12-06 00:18:34 +00:00
Added truncate for servers with long list of mods (discord max length 1024 chars) and feed parse optimization
This commit is contained in:
parent
a28796751a
commit
696e8f1749
2 changed files with 20 additions and 9 deletions
|
|
@ -92,6 +92,16 @@ export default class DiscordEmbed {
|
|||
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
|
||||
* @param serverStats
|
||||
|
|
@ -113,6 +123,8 @@ export default class DiscordEmbed {
|
|||
embed.setThumbnail(config.application.serverMapUrl);
|
||||
|
||||
let playerListString: string;
|
||||
let playerListTitleString = `${config.translation.discordEmbed.titlePlayerCount} (${serverStats.getPlayerCount()??0}/${serverStats.getMaxPlayerCount()??0}):`;
|
||||
|
||||
if(serverStats.getPlayerList().length === 0) {
|
||||
playerListString = config.translation.discordEmbed.noPlayersOnline;
|
||||
} else {
|
||||
|
|
@ -127,7 +139,7 @@ export default class DiscordEmbed {
|
|||
let serverMods = serverStats.getServerMods();
|
||||
let serverModsText = "-/-";
|
||||
if(serverMods.length > 0) {
|
||||
serverModsText = serverMods.map(mod => `${mod.name}`).join(', ');
|
||||
serverModsText = await this.truncateText(serverMods.map(mod => `${mod.name}`).join(', '));
|
||||
}
|
||||
|
||||
// @ts-ignore
|
||||
|
|
@ -138,12 +150,11 @@ export default class DiscordEmbed {
|
|||
{name: config.translation.discordEmbed.titleServerMap, value: serverStats.getServerMap()},
|
||||
{name: config.translation.discordEmbed.titleServerMods, value: serverModsText},
|
||||
{
|
||||
name: `${config.translation.discordEmbed.titlePlayerCount} (${serverStats.getPlayerCount()}/${serverStats.getMaxPlayerCount()}):`,
|
||||
name: playerListTitleString,
|
||||
value: playerListString
|
||||
},
|
||||
);
|
||||
}
|
||||
this.appLogger.debug(embed);
|
||||
return embed;
|
||||
}
|
||||
}
|
||||
|
|
@ -161,18 +161,18 @@ export default class ServerStatusFeed {
|
|||
|
||||
/**
|
||||
* Returns the server player count
|
||||
* @returns {number} The server player count
|
||||
* @returns {number | null | undefined} The server player count
|
||||
*/
|
||||
public getPlayerCount(): number {
|
||||
return <number>this.getServerStats()?.Server.Slots.numUsed;
|
||||
public getPlayerCount(): number | null | undefined {
|
||||
return <number>this.getServerStats()?.Server?.Slots?.numUsed;
|
||||
}
|
||||
|
||||
/**
|
||||
* Returns the server player count
|
||||
* @returns {number} The server player count
|
||||
* @returns {number | null | undefined} The server player count
|
||||
*/
|
||||
public getMaxPlayerCount(): number {
|
||||
return <number>this.getServerStats()?.Server.Slots.capacity;
|
||||
public getMaxPlayerCount(): number | null | undefined {
|
||||
return <number>this.getServerStats()?.Server?.Slots?.capacity;
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
|
|||
Loading…
Reference in a new issue