Skip to content

Commit 696e8f1

Browse files
committed
Added truncate for servers with long list of mods (discord max length 1024 chars) and feed parse optimization
1 parent a287967 commit 696e8f1

File tree

2 files changed

+20
-9
lines changed

2 files changed

+20
-9
lines changed

source/Services/DiscordEmbed.ts

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,16 @@ export default class DiscordEmbed {
9292
return true;
9393
}
9494

95+
/**
96+
* Truncates a string at a given length
97+
* @param text The input text to truncate
98+
* @param maxLength The allowed characters until truncation
99+
* @returns The truncated string
100+
*/
101+
private async truncateText(text: string, maxLength = 1024): Promise<string> {
102+
return text.length > maxLength ? text.slice(0, maxLength - 3) + '...' : text;
103+
}
104+
95105
/**
96106
* Send server stats embed in a channel
97107
* @param serverStats
@@ -113,6 +123,8 @@ export default class DiscordEmbed {
113123
embed.setThumbnail(config.application.serverMapUrl);
114124

115125
let playerListString: string;
126+
let playerListTitleString = `${config.translation.discordEmbed.titlePlayerCount} (${serverStats.getPlayerCount()??0}/${serverStats.getMaxPlayerCount()??0}):`;
127+
116128
if(serverStats.getPlayerList().length === 0) {
117129
playerListString = config.translation.discordEmbed.noPlayersOnline;
118130
} else {
@@ -127,7 +139,7 @@ export default class DiscordEmbed {
127139
let serverMods = serverStats.getServerMods();
128140
let serverModsText = "-/-";
129141
if(serverMods.length > 0) {
130-
serverModsText = serverMods.map(mod => `${mod.name}`).join(', ');
142+
serverModsText = await this.truncateText(serverMods.map(mod => `${mod.name}`).join(', '));
131143
}
132144

133145
// @ts-ignore
@@ -138,12 +150,11 @@ export default class DiscordEmbed {
138150
{name: config.translation.discordEmbed.titleServerMap, value: serverStats.getServerMap()},
139151
{name: config.translation.discordEmbed.titleServerMods, value: serverModsText},
140152
{
141-
name: `${config.translation.discordEmbed.titlePlayerCount} (${serverStats.getPlayerCount()}/${serverStats.getMaxPlayerCount()}):`,
153+
name: playerListTitleString,
142154
value: playerListString
143155
},
144156
);
145157
}
146-
this.appLogger.debug(embed);
147158
return embed;
148159
}
149160
}

source/Services/ServerStatusFeed.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -161,18 +161,18 @@ export default class ServerStatusFeed {
161161

162162
/**
163163
* Returns the server player count
164-
* @returns {number} The server player count
164+
* @returns {number | null | undefined} The server player count
165165
*/
166-
public getPlayerCount(): number {
167-
return <number>this.getServerStats()?.Server.Slots.numUsed;
166+
public getPlayerCount(): number | null | undefined {
167+
return <number>this.getServerStats()?.Server?.Slots?.numUsed;
168168
}
169169

170170
/**
171171
* Returns the server player count
172-
* @returns {number} The server player count
172+
* @returns {number | null | undefined} The server player count
173173
*/
174-
public getMaxPlayerCount(): number {
175-
return <number>this.getServerStats()?.Server.Slots.capacity;
174+
public getMaxPlayerCount(): number | null | undefined {
175+
return <number>this.getServerStats()?.Server?.Slots?.capacity;
176176
}
177177

178178
/**

0 commit comments

Comments
 (0)