diff --git a/ArchiSteamFarm/ArchiWebHandler.cs b/ArchiSteamFarm/ArchiWebHandler.cs index 371a4e5ba..6efc1d8fc 100644 --- a/ArchiSteamFarm/ArchiWebHandler.cs +++ b/ArchiSteamFarm/ArchiWebHandler.cs @@ -1761,7 +1761,7 @@ namespace ArchiSteamFarm { return null; } - if (!ulong.TryParse(giftCardIDText.Substring(13), out ulong giftCardID) || (giftCardID == 0)) { + if (!ulong.TryParse(giftCardIDText[13..], out ulong giftCardID) || (giftCardID == 0)) { Bot.ArchiLogger.LogGenericError(string.Format(CultureInfo.CurrentCulture, Strings.ErrorParsingObject, nameof(giftCardID))); return null; @@ -1904,7 +1904,7 @@ namespace ArchiSteamFarm { } index += daysTheirVariableName.Length; - text = text.Substring(index); + text = text[index..]; index = text.IndexOf(';'); @@ -1914,7 +1914,7 @@ namespace ArchiSteamFarm { return null; } - text = text.Substring(0, index); + text = text[..index]; if (!byte.TryParse(text, out byte result)) { Bot.ArchiLogger.LogNullError(nameof(result)); @@ -2393,7 +2393,7 @@ namespace ArchiSteamFarm { return (ESteamApiKeyState.Error, null); } - text = text.Substring(keyIndex); + text = text[keyIndex..]; if ((text.Length != 32) || !Utilities.IsValidHexadecimalText(text)) { Bot.ArchiLogger.LogNullError(nameof(text)); diff --git a/ArchiSteamFarm/Bot.cs b/ArchiSteamFarm/Bot.cs index 60854b9cb..4c6f55242 100755 --- a/ArchiSteamFarm/Bot.cs +++ b/ArchiSteamFarm/Bot.cs @@ -424,7 +424,7 @@ namespace ArchiSteamFarm { } if (botName.StartsWith("r!", StringComparison.OrdinalIgnoreCase)) { - string botsPattern = botName.Substring(2); + string botsPattern = botName[2..]; RegexOptions botsRegex = RegexOptions.None; diff --git a/ArchiSteamFarm/CardsFarmer.cs b/ArchiSteamFarm/CardsFarmer.cs index 15ad05d18..180a40f31 100755 --- a/ArchiSteamFarm/CardsFarmer.cs +++ b/ArchiSteamFarm/CardsFarmer.cs @@ -642,23 +642,31 @@ namespace ArchiSteamFarm { continue; } - int levelIndex = levelText.IndexOf("Level ", StringComparison.OrdinalIgnoreCase); + int levelStartIndex = levelText.IndexOf("Level ", StringComparison.OrdinalIgnoreCase); - if (levelIndex < 0) { - Bot.ArchiLogger.LogNullError(nameof(levelIndex)); + if (levelStartIndex < 0) { + Bot.ArchiLogger.LogNullError(nameof(levelStartIndex)); continue; } - levelIndex += 6; + levelStartIndex += 6; - if (levelText.Length <= levelIndex) { - Bot.ArchiLogger.LogNullError(nameof(levelIndex)); + if (levelText.Length <= levelStartIndex) { + Bot.ArchiLogger.LogNullError(nameof(levelStartIndex)); continue; } - levelText = levelText.Substring(levelIndex, 1); + int levelEndIndex = levelText.IndexOf(',', levelStartIndex); + + if (levelEndIndex <= levelStartIndex) { + Bot.ArchiLogger.LogNullError(nameof(levelEndIndex)); + + continue; + } + + levelText = levelText[levelStartIndex..levelEndIndex]; if (!byte.TryParse(levelText, out badgeLevel) || (badgeLevel == 0) || (badgeLevel > 5)) { Bot.ArchiLogger.LogNullError(nameof(badgeLevel)); diff --git a/ArchiSteamFarm/Commands.cs b/ArchiSteamFarm/Commands.cs index b2801b522..c79c6d52e 100644 --- a/ArchiSteamFarm/Commands.cs +++ b/ArchiSteamFarm/Commands.cs @@ -327,7 +327,7 @@ namespace ArchiSteamFarm { return; } - message = message.Substring(commandPrefix.Length); + message = message[commandPrefix.Length..]; } Task responseTask = Response(steamID, message); @@ -401,7 +401,7 @@ namespace ArchiSteamFarm { return; } - message = message.Substring(commandPrefix.Length); + message = message[commandPrefix.Length..]; } Task responseTask = Response(steamID, message); @@ -584,13 +584,13 @@ namespace ArchiSteamFarm { int index = entry.IndexOf('/'); if ((index > 0) && (entry.Length > index + 1)) { - if (!uint.TryParse(entry.Substring(index + 1), out gameID) || (gameID == 0)) { + if (!uint.TryParse(entry[(index + 1)..], out gameID) || (gameID == 0)) { response.AppendLine(FormatBotResponse(string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsInvalid, nameof(gameID)))); continue; } - type = entry.Substring(0, index); + type = entry[..index]; } else if (uint.TryParse(entry, out gameID) && (gameID > 0)) { type = "SUB"; } else { @@ -1892,8 +1892,8 @@ namespace ArchiSteamFarm { int index = entry.IndexOf('/'); if ((index > 0) && (entry.Length > index + 1)) { - game = entry.Substring(index + 1); - type = entry.Substring(0, index); + game = entry[(index + 1)..]; + type = entry[..index]; } else if (uint.TryParse(entry, out uint appID) && (appID > 0)) { game = entry; type = "APP"; diff --git a/ArchiSteamFarm/IPC/Controllers/Api/CommandController.cs b/ArchiSteamFarm/IPC/Controllers/Api/CommandController.cs index 9020eb6eb..aabd95925 100644 --- a/ArchiSteamFarm/IPC/Controllers/Api/CommandController.cs +++ b/ArchiSteamFarm/IPC/Controllers/Api/CommandController.cs @@ -73,7 +73,7 @@ namespace ArchiSteamFarm.IPC.Controllers.Api { return BadRequest(new GenericResponse(false, string.Format(CultureInfo.CurrentCulture, Strings.ErrorIsEmpty, nameof(command)))); } - command = command.Substring(commandPrefix!.Length); + command = command[commandPrefix!.Length..]; } string? response = await targetBot.Commands.Response(steamOwnerID, command).ConfigureAwait(false); diff --git a/ArchiSteamFarm/IPC/WebUtilities.cs b/ArchiSteamFarm/IPC/WebUtilities.cs index 5360ff213..de456f041 100644 --- a/ArchiSteamFarm/IPC/WebUtilities.cs +++ b/ArchiSteamFarm/IPC/WebUtilities.cs @@ -64,7 +64,7 @@ namespace ArchiSteamFarm.IPC { return null; } - return Type.GetType(typeText + "," + typeText.Substring(0, index)); + return Type.GetType(typeText + "," + typeText[..index]); } } } diff --git a/ArchiSteamFarm/Json/Steam.cs b/ArchiSteamFarm/Json/Steam.cs index 99f7c1baa..09689bf98 100644 --- a/ArchiSteamFarm/Json/Steam.cs +++ b/ArchiSteamFarm/Json/Steam.cs @@ -457,7 +457,7 @@ namespace ArchiSteamFarm.Json { break; } - string appIDText = tag.Value.Substring(4); + string appIDText = tag.Value[4..]; if (!uint.TryParse(appIDText, out uint appID) || (appID == 0)) { ASF.ArchiLogger.LogNullError(nameof(appID)); diff --git a/ArchiSteamFarm/NLog/Logging.cs b/ArchiSteamFarm/NLog/Logging.cs index 7f13c833d..935ce9983 100644 --- a/ArchiSteamFarm/NLog/Logging.cs +++ b/ArchiSteamFarm/NLog/Logging.cs @@ -327,7 +327,7 @@ namespace ArchiSteamFarm.NLog { continue; } - command = command.Substring(commandPrefix!.Length); + command = command[commandPrefix!.Length..]; } Bot? targetBot = Bot.Bots?.OrderBy(bot => bot.Key, Bot.BotsComparer).Select(bot => bot.Value).FirstOrDefault(); diff --git a/ArchiSteamFarm/Program.cs b/ArchiSteamFarm/Program.cs index aa97f8247..0919505c6 100644 --- a/ArchiSteamFarm/Program.cs +++ b/ArchiSteamFarm/Program.cs @@ -501,15 +501,15 @@ namespace ArchiSteamFarm { } else { switch (arg.Length) { case > 16 when arg.StartsWith("--network-group=", StringComparison.Ordinal): - HandleNetworkGroupArgument(arg.Substring(16)); + HandleNetworkGroupArgument(arg[16..]); break; case > 11 when arg.StartsWith("--cryptkey=", StringComparison.Ordinal): - HandleCryptKeyArgument(arg.Substring(11)); + HandleCryptKeyArgument(arg[11..]); break; case > 7 when arg.StartsWith("--path=", StringComparison.Ordinal): - HandlePathArgument(arg.Substring(7)); + HandlePathArgument(arg[7..]); break; default: diff --git a/ArchiSteamFarm/RuntimeCompatibility.cs b/ArchiSteamFarm/RuntimeCompatibility.cs index fffdd15bd..a4860f230 100644 --- a/ArchiSteamFarm/RuntimeCompatibility.cs +++ b/ArchiSteamFarm/RuntimeCompatibility.cs @@ -125,9 +125,9 @@ namespace ArchiSteamFarm { throw new NotImplementedException(); } - string result = path.Substring(relativeTo.Length); + string result = path[relativeTo.Length..]; - return (result[0] == System.IO.Path.DirectorySeparatorChar) || (result[0] == System.IO.Path.AltDirectorySeparatorChar) ? result.Substring(1) : result; + return (result[0] == System.IO.Path.DirectorySeparatorChar) || (result[0] == System.IO.Path.AltDirectorySeparatorChar) ? result[1..] : result; #else #pragma warning disable IDE0022 return System.IO.Path.GetRelativePath(relativeTo, path);