@@ -14,6 +14,7 @@ namespace DTAClient.Domain
1414 /// </summary>
1515 public class DiscordHandler : IDisposable
1616 {
17+ private const int MaxDiscordPresenceTextLength = 128 ;
1718 private DiscordRpcClient client ;
1819
1920 private RichPresence _currentPresence ;
@@ -158,13 +159,13 @@ public void UpdatePresence(string map, string mode, string type, string state,
158159 stateString += "🔒" ;
159160 CurrentPresence = new RichPresence ( )
160161 {
161- State = stateString ,
162- Details = $ "{ type } • { map } • { mode } ",
162+ State = TrimDiscordPresenceText ( stateString ) ,
163+ Details = TrimDiscordPresenceText ( $ "{ type } • { map } • { mode } ") ,
163164 Assets = new Assets ( )
164165 {
165166 LargeImageKey = "logo" ,
166167 SmallImageKey = sideKey ,
167- SmallImageText = side
168+ SmallImageText = TrimDiscordPresenceText ( side )
168169 } ,
169170 Timestamps = ( client ? . CurrentPresence . HasTimestamps ( ) ?? false ) && ! resetTimer ?
170171 client . CurrentPresence . Timestamps : Timestamps . Now
@@ -184,8 +185,8 @@ public void UpdatePresence(string map, string mode, string type, string state,
184185 stateString += "👑" ;
185186 CurrentPresence = new RichPresence ( )
186187 {
187- State = stateString ,
188- Details = $ "{ type } • { map } • { mode } ",
188+ State = TrimDiscordPresenceText ( stateString ) ,
189+ Details = TrimDiscordPresenceText ( $ "{ type } • { map } • { mode } ") ,
189190 Assets = new Assets ( )
190191 {
191192 LargeImageKey = "logo"
@@ -203,13 +204,13 @@ public void UpdatePresence(string map, string mode, string state, string side, b
203204 string sideKey = new Regex ( "[^a-zA-Z0-9]" ) . Replace ( side . ToLower ( ) , "" ) ;
204205 CurrentPresence = new RichPresence ( )
205206 {
206- State = $ " { state } " ,
207- Details = $ "Skirmish • { map } • { mode } ",
207+ State = TrimDiscordPresenceText ( state ) ,
208+ Details = TrimDiscordPresenceText ( $ "Skirmish • { map } • { mode } ") ,
208209 Assets = new Assets ( )
209210 {
210211 LargeImageKey = "logo" ,
211212 SmallImageKey = sideKey ,
212- SmallImageText = side
213+ SmallImageText = TrimDiscordPresenceText ( side )
213214 } ,
214215 Timestamps = ( client ? . CurrentPresence . HasTimestamps ( ) ?? false ) && ! resetTimer ?
215216 client . CurrentPresence . Timestamps : Timestamps . Now
@@ -225,12 +226,12 @@ public void UpdatePresence(string mission, string difficulty, string side, bool
225226 CurrentPresence = new RichPresence ( )
226227 {
227228 State = "Playing Mission" ,
228- Details = $ "{ mission } • { difficulty } ",
229+ Details = TrimDiscordPresenceText ( $ "{ mission } • { difficulty } ") ,
229230 Assets = new Assets ( )
230231 {
231232 LargeImageKey = "logo" ,
232233 SmallImageKey = sideKey ,
233- SmallImageText = side
234+ SmallImageText = TrimDiscordPresenceText ( side )
234235 } ,
235236 Timestamps = ( client ? . CurrentPresence . HasTimestamps ( ) ?? false ) && ! resetTimer ?
236237 client . CurrentPresence . Timestamps : Timestamps . Now
@@ -245,7 +246,7 @@ public void UpdatePresence(string save, bool resetTimer = false)
245246 CurrentPresence = new RichPresence ( )
246247 {
247248 State = "Playing Saved Game" ,
248- Details = $ " { save } " ,
249+ Details = TrimDiscordPresenceText ( save ) ,
249250 Assets = new Assets ( )
250251 {
251252 LargeImageKey = "logo"
@@ -255,6 +256,14 @@ public void UpdatePresence(string save, bool resetTimer = false)
255256 } ;
256257 }
257258
259+ private static string TrimDiscordPresenceText ( string value )
260+ {
261+ if ( string . IsNullOrEmpty ( value ) || value . Length <= MaxDiscordPresenceTextLength )
262+ return value ;
263+
264+ return value . Substring ( 0 , MaxDiscordPresenceTextLength - 3 ) + "..." ;
265+ }
266+
258267 #endregion
259268
260269 #region eventhandlers
0 commit comments