mirror of
https://github.com/RPCS3/discord-bot.git
synced 2025-03-03 23:37:03 +00:00
update to c# 8.0 syntax, mostly for .Substring()
This commit is contained in:
parent
5b9ad81dbe
commit
15ed3a64fe
@ -82,7 +82,7 @@ namespace CompatApiClient
|
||||
{
|
||||
var query = uri.IsAbsoluteUri ? uri.Query : new Uri(FakeHost, uri).Query;
|
||||
if (!string.IsNullOrEmpty(query) && query.Length > 1)
|
||||
query = query.Substring(1) + "&" + queryToAppend;
|
||||
query = query[1..] + "&" + queryToAppend;
|
||||
else
|
||||
query = queryToAppend;
|
||||
return SetQueryValue(uri, query);
|
||||
@ -102,7 +102,7 @@ namespace CompatApiClient
|
||||
uri = new Uri(FakeHost, uri);
|
||||
var builder = new UriBuilder(uri) { Query = value };
|
||||
var additionalStrip = startWithSlash ? 0 : 1;
|
||||
var newUri = builder.ToString().Substring(FakeHost.OriginalString.Length + additionalStrip);
|
||||
var newUri = builder.ToString()[(FakeHost.OriginalString.Length + additionalStrip)..];
|
||||
return new Uri(newUri, UriKind.Relative);
|
||||
}
|
||||
}
|
||||
|
@ -14,7 +14,7 @@ namespace CompatApiClient.Utils
|
||||
return str;
|
||||
|
||||
if (str.Length > maxLength)
|
||||
return str.Substring(0, maxLength - 1) + "…";
|
||||
return str[..(maxLength - 1)] + "…";
|
||||
|
||||
return str;
|
||||
}
|
||||
@ -27,7 +27,7 @@ namespace CompatApiClient.Utils
|
||||
if (string.IsNullOrEmpty(str) || str.Length <= maxLength)
|
||||
return str;
|
||||
|
||||
return str.Substring(0, maxLength);
|
||||
return str[..maxLength];
|
||||
}
|
||||
|
||||
public static string Sanitize(this string str, bool breakLinks = true, bool replaceBackTicks = false)
|
||||
|
@ -223,7 +223,7 @@ namespace IrdLibraryClient
|
||||
return null;
|
||||
|
||||
var idx = html.LastIndexOf("</span>");
|
||||
var result = html.Substring(idx + 7).Trim();
|
||||
var result = html[(idx + 7)..].Trim();
|
||||
if (string.IsNullOrEmpty(result))
|
||||
return null;
|
||||
|
||||
|
@ -427,9 +427,9 @@ namespace PsnClient
|
||||
if (!string.IsNullOrEmpty(ver) && ver.Length > 4)
|
||||
{
|
||||
if (ver.EndsWith("00"))
|
||||
ver = ver.Substring(0, 4); //4.85
|
||||
ver = ver[..4]; //4.85
|
||||
else
|
||||
ver = ver.Substring(0, 4) + "." + ver.Substring(4).TrimEnd('0'); //4.851 -> 4.85.1
|
||||
ver = ver[..4] + "." + ver[4..].TrimEnd('0'); //4.851 -> 4.85.1
|
||||
}
|
||||
return new FirmwareInfo { Version = ver, DownloadUrl = m.Groups["url"].Value, Locale = fwLocale};
|
||||
}
|
||||
|
@ -47,7 +47,7 @@ namespace CompatBot.Commands.Converters
|
||||
}
|
||||
|
||||
if (value.StartsWith('#'))
|
||||
value = value.Substring(1);
|
||||
value = value[1..];
|
||||
value = value.ToLowerInvariant();
|
||||
var chn = (
|
||||
from g in guildList
|
||||
|
@ -510,7 +510,7 @@ namespace CompatBot.Commands
|
||||
if (name.Length - lastPartIdx > 5
|
||||
&& name.Substring(lastPartIdx + 1, 5).ToLowerInvariant() is string lnk
|
||||
&& (lnk.StartsWith("<http") || lnk.StartsWith("http")))
|
||||
return name.Substring(0, lastPartIdx);
|
||||
return name[..lastPartIdx];
|
||||
|
||||
return name;
|
||||
}
|
||||
|
@ -73,7 +73,7 @@ namespace CompatBot.Commands
|
||||
var idx = term.LastIndexOf(" to ");
|
||||
if (idx > 0)
|
||||
{
|
||||
var potentialUserId = term.Substring(idx + 4).Trim();
|
||||
var potentialUserId = term[(idx + 4)..].Trim();
|
||||
bool hasMention = false;
|
||||
try
|
||||
{
|
||||
@ -84,7 +84,7 @@ namespace CompatBot.Commands
|
||||
|
||||
if (hasMention)
|
||||
{
|
||||
term = term.Substring(0, idx).TrimEnd();
|
||||
term = term[..idx].TrimEnd();
|
||||
var mentionResult = await LookupTerm(term).ConfigureAwait(false);
|
||||
if (mentionResult.score > result.score)
|
||||
result = mentionResult;
|
||||
|
@ -210,7 +210,7 @@ namespace CompatBot.Commands
|
||||
{
|
||||
question = question?.ToLowerInvariant() ?? "";
|
||||
if (question.StartsWith("when "))
|
||||
await When(ctx, question.Substring(5)).ConfigureAwait(false);
|
||||
await When(ctx, question[5..]).ConfigureAwait(false);
|
||||
else
|
||||
{
|
||||
string answer;
|
||||
@ -232,7 +232,7 @@ namespace CompatBot.Commands
|
||||
if (number > 1)
|
||||
{
|
||||
if (unit.EndsWith("ry"))
|
||||
unit = unit.Substring(0, unit.Length - 1) + "ie";
|
||||
unit = unit[..^1] + "ie";
|
||||
unit += "s";
|
||||
if (unit == "millenniums")
|
||||
unit = "millennia";
|
||||
@ -280,19 +280,19 @@ namespace CompatBot.Commands
|
||||
var tmp = word.TrimEnd(Suffixes);
|
||||
if (tmp.Length != word.Length)
|
||||
{
|
||||
suffix = word.Substring(tmp.Length);
|
||||
suffix = word[..tmp.Length];
|
||||
word = tmp;
|
||||
}
|
||||
tmp = word.TrimStart(Prefixes);
|
||||
if (tmp.Length != word.Length)
|
||||
{
|
||||
result.Append(word.Substring(0, word.Length - tmp.Length));
|
||||
result.Append(word[..^tmp.Length]);
|
||||
word = tmp;
|
||||
}
|
||||
if (word.EndsWith("'s"))
|
||||
{
|
||||
suffix = "'s" + suffix;
|
||||
word = word.Substring(0, word.Length - 2);
|
||||
word = word[..^2];
|
||||
}
|
||||
|
||||
void MakeCustomRoleRating(DiscordMember mem)
|
||||
@ -307,7 +307,7 @@ namespace CompatBot.Commands
|
||||
if (!string.IsNullOrEmpty(role))
|
||||
{
|
||||
if (role.EndsWith('s'))
|
||||
role = role.Substring(0, role.Length - 1);
|
||||
role = role[..^1];
|
||||
var article = Vowels.Contains(role[0]) ? "n" : "";
|
||||
choices = RateAnswers.Concat(Enumerable.Repeat($"Pretty fly for a{article} {role} guy", RateAnswers.Count / 20)).ToList();
|
||||
choiceFlags.Add('f');
|
||||
@ -385,10 +385,10 @@ namespace CompatBot.Commands
|
||||
whatever = result.ToString();
|
||||
var cutIdx = whatever.LastIndexOf("never mind");
|
||||
if (cutIdx > -1)
|
||||
whatever = whatever.Substring(cutIdx);
|
||||
whatever = whatever[cutIdx..];
|
||||
whatever = whatever.Replace("'s's", "'s").TrimStart(EveryTimable).Trim();
|
||||
if (whatever.StartsWith("rate "))
|
||||
whatever = whatever.Substring("rate ".Length);
|
||||
whatever = whatever[("rate ".Length)..];
|
||||
if (originalWhatever == "sonic" || originalWhatever.Contains("sonic the"))
|
||||
choices = RateAnswers.Concat(Enumerable.Repeat("💩 out of 🦔", RateAnswers.Count)).Concat(new[] {"Sonic out of 🦔", "Sonic out of 10"}).ToList();
|
||||
|
||||
|
@ -79,7 +79,7 @@ namespace CompatBot.Commands
|
||||
var newTitle = "(๑•ิཬ•ั๑)";
|
||||
var partStart = embed.Title.IndexOf(" [Part");
|
||||
if (partStart > -1)
|
||||
newTitle += embed.Title.Substring(partStart);
|
||||
newTitle += embed.Title[partStart..];
|
||||
embed.Title = newTitle;
|
||||
if (!string.IsNullOrEmpty(embed.ThumbnailUrl))
|
||||
embed.ThumbnailUrl = "https://cdn.discordapp.com/attachments/417347469521715210/516340151589535745/onionoff.png";
|
||||
@ -88,7 +88,7 @@ namespace CompatBot.Commands
|
||||
await ctx.Message.ReactWithAsync(sqvat).ConfigureAwait(false);
|
||||
}
|
||||
if (embeds.Count > 1 || embeds[0].Fields?.Count > 0)
|
||||
embeds[embeds.Count - 1] = embeds.Last().WithFooter("Note that you need to install all listed updates one by one");
|
||||
embeds[^1] = embeds.Last().WithFooter("Note that you need to install all listed updates one by one");
|
||||
foreach (var embed in embeds)
|
||||
await ctx.RespondAsync(embed: embed).ConfigureAwait(false);
|
||||
}
|
||||
|
@ -118,11 +118,11 @@ namespace CompatBot.Commands
|
||||
|
||||
var alteredSearch = search.Trim();
|
||||
if (alteredSearch.EndsWith("demo", StringComparison.InvariantCultureIgnoreCase))
|
||||
alteredSearch = alteredSearch.Substring(0, alteredSearch.Length - 4).TrimEnd();
|
||||
alteredSearch = alteredSearch[..^4].TrimEnd();
|
||||
if (alteredSearch.EndsWith("trial", StringComparison.InvariantCultureIgnoreCase))
|
||||
alteredSearch = alteredSearch.Substring(0, alteredSearch.Length - 5).TrimEnd();
|
||||
alteredSearch = alteredSearch[..^5].TrimEnd();
|
||||
if (alteredSearch.EndsWith("体験版"))
|
||||
alteredSearch = alteredSearch.Substring(0, alteredSearch.Length - 3).TrimEnd();
|
||||
alteredSearch = alteredSearch[..^3].TrimEnd();
|
||||
|
||||
if (string.IsNullOrEmpty(alteredSearch))
|
||||
alteredSearch = search;
|
||||
|
@ -38,7 +38,7 @@ namespace CompatBot.Commands
|
||||
if (match.Success && DateTime.TryParse(match.Groups["date"].Value, out var timestamp))
|
||||
{
|
||||
warning.Timestamp = timestamp.Ticks;
|
||||
warning.FullReason = warning.FullReason.Substring(match.Groups["cutout"].Value.Length);
|
||||
warning.FullReason = warning.FullReason[(match.Groups["cutout"].Value.Length)..];
|
||||
@fixed++;
|
||||
}
|
||||
}
|
||||
|
@ -82,7 +82,7 @@ namespace CompatBot.Commands
|
||||
endIdx = emojis.Length;
|
||||
emoji = emojis.Substring(i, endIdx - i);
|
||||
i = endIdx - 1;
|
||||
var emojiId = ulong.Parse(emoji.Substring(emoji.LastIndexOf(':') + 1));
|
||||
var emojiId = ulong.Parse(emoji[(emoji.LastIndexOf(':') + 1)..]);
|
||||
de = DiscordEmoji.FromGuildEmote(ctx.Client, emojiId);
|
||||
}
|
||||
else
|
||||
|
@ -227,7 +227,7 @@ namespace CompatBot.EventHandlers
|
||||
var linkStart = message.Content.IndexOf("http");
|
||||
if (linkStart > -1)
|
||||
{
|
||||
var link = message.Content.Substring(linkStart).Split(linkSeparator, 2)[0];
|
||||
var link = message.Content[linkStart..].Split(linkSeparator, 2)[0];
|
||||
if (link.Contains(".log", StringComparison.InvariantCultureIgnoreCase) || link.Contains("rpcs3.zip", StringComparison.CurrentCultureIgnoreCase))
|
||||
await channel.SendMessageAsync("If you intended to upload a log file please re-upload it directly to discord").ConfigureAwait(false);
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ namespace CompatBot.EventHandlers
|
||||
var tableIdx = content.IndexOf("┻━┻");
|
||||
if (tableIdx < 0)
|
||||
tableIdx = content.IndexOf("┻━┻");
|
||||
var faceIdx = content.Substring(0, tableIdx).LastIndexOfAny(OpenParen);
|
||||
var faceIdx = content[..tableIdx].LastIndexOfAny(OpenParen);
|
||||
var face = content.Substring(faceIdx, tableIdx - faceIdx);
|
||||
if (face.Length > 30)
|
||||
return;
|
||||
@ -60,8 +60,8 @@ namespace CompatBot.EventHandlers
|
||||
return;
|
||||
|
||||
var faceLength = reverseFace.Length;
|
||||
if (faceLength > 5+4)
|
||||
reverseFace = $"{reverseFace.Substring(0, 2)}ಠ益ಠ{reverseFace.Substring(faceLength - 2, 2)}";
|
||||
if (faceLength > 5 + 4)
|
||||
reverseFace = $"{reverseFace[..2]}ಠ益ಠ{reverseFace[^2..]}";
|
||||
await args.Channel.SendMessageAsync("┬─┬ " + reverseFace.Sanitize()).ConfigureAwait(false);
|
||||
}
|
||||
catch (Exception e)
|
||||
|
@ -37,7 +37,7 @@ namespace CompatBot.EventHandlers
|
||||
e.Context.Message,
|
||||
e.Context.Prefix,
|
||||
cmd,
|
||||
e.Context.Message.Content.Substring(e.Context.Prefix.Length).Trim()
|
||||
e.Context.Message.Content[(e.Context.Prefix.Length)..].Trim()
|
||||
);
|
||||
try { await cmd.ExecuteAsync(updatedContext).ConfigureAwait(false); } catch { }
|
||||
return;
|
||||
@ -55,7 +55,7 @@ namespace CompatBot.EventHandlers
|
||||
if (pos < 0)
|
||||
return;
|
||||
|
||||
var gameTitle = e.Context.Message.Content.Substring(pos).TrimEager().Trim(40);
|
||||
var gameTitle = e.Context.Message.Content[pos..].TrimEager().Trim(40);
|
||||
if (string.IsNullOrEmpty(gameTitle) || char.IsPunctuation(gameTitle[0]))
|
||||
return;
|
||||
|
||||
|
@ -95,7 +95,7 @@ namespace CompatBot.Utils
|
||||
return first + last;
|
||||
|
||||
if (first == last)
|
||||
return first.Substring(0, 1);
|
||||
return first[..1];
|
||||
|
||||
if (last.StartsWith(first))
|
||||
return $"{first} - {last}";
|
||||
|
@ -50,7 +50,7 @@ namespace CompatBot.Utils
|
||||
return str;
|
||||
|
||||
if (str.StartsWith('"') && str.EndsWith('"'))
|
||||
return str.Substring(1, str.Length - 2);
|
||||
return str[1..^1];
|
||||
return str;
|
||||
}
|
||||
|
||||
|
@ -278,7 +278,7 @@ namespace CompatBot.Utils.ResultFormatters
|
||||
{
|
||||
var modelNumber = intelMatch.Groups["gpu_model_number"].Value;
|
||||
if (!string.IsNullOrEmpty(modelNumber) && modelNumber.StartsWith('P'))
|
||||
modelNumber = modelNumber.Substring(1);
|
||||
modelNumber = modelNumber[1..];
|
||||
int.TryParse(modelNumber, out var modelNumberInt);
|
||||
if (modelNumberInt < 500 || modelNumberInt > 1000)
|
||||
{
|
||||
|
@ -296,7 +296,7 @@ namespace CompatBot.Utils.ResultFormatters
|
||||
else if (items["disc_package_version"] is string discPkgVer && !discPkgVer.Equals("Unknown", StringComparison.InvariantCultureIgnoreCase))
|
||||
items["game_version"] = discPkgVer;
|
||||
if (items["game_version"] is string gameVer && gameVer.StartsWith("0"))
|
||||
items["game_version"] = gameVer.Substring(1);
|
||||
items["game_version"] = gameVer[1..];
|
||||
|
||||
foreach (var key in items.AllKeys)
|
||||
{
|
||||
@ -373,7 +373,7 @@ namespace CompatBot.Utils.ResultFormatters
|
||||
return false;
|
||||
|
||||
var len = Math.Min(commitA.Length, commitB.Length);
|
||||
return commitA.Substring(0, len) == commitB.Substring(0, len);
|
||||
return commitA[..len] == commitB[..len];
|
||||
}
|
||||
|
||||
private static string GetOpenglDriverVersion(string gpuInfo, string version)
|
||||
@ -547,7 +547,7 @@ namespace CompatBot.Utils.ResultFormatters
|
||||
|
||||
if (release.Contains(".fc"))
|
||||
{
|
||||
var ver = release.Split('.').FirstOrDefault(p => p.StartsWith("fc"))?.Substring(2);
|
||||
var ver = release.Split('.').FirstOrDefault(p => p.StartsWith("fc"))?[2..];
|
||||
return "Fedora " + ver;
|
||||
}
|
||||
|
||||
|
@ -72,7 +72,7 @@ namespace CompatBot.Utils.ResultFormatters
|
||||
{
|
||||
var match = PsnScraper.ContentIdMatcher.Match(fname);
|
||||
if (match.Success)
|
||||
return fname.Substring(20);
|
||||
return fname[20..];
|
||||
}
|
||||
catch { }
|
||||
return fname;
|
||||
|
@ -106,7 +106,7 @@ namespace CompatBot.Utils.ResultFormatters
|
||||
|
||||
var text = new Uri(link).Segments?.Last() ?? "";
|
||||
if (simpleName && text.StartsWith("rpcs3-"))
|
||||
text = text.Substring(6);
|
||||
text = text[6..];
|
||||
if (simpleName && text.Contains('_'))
|
||||
text = text.Split('_', 2)[0] + Path.GetExtension(text);
|
||||
|
||||
|
@ -8,7 +8,7 @@ namespace CompatBot.Utils
|
||||
{
|
||||
public static readonly Dictionary<string, TimeZoneInfo> TimeZoneMap;
|
||||
|
||||
public static Dictionary<string, string[]> TimeZoneAcronyms = new Dictionary<string, string[]>
|
||||
public static readonly Dictionary<string, string[]> TimeZoneAcronyms = new Dictionary<string, string[]>
|
||||
{
|
||||
["PT"] = new[] { "Pacific Standard Time" },
|
||||
["PST"] = new[] { "Pacific Standard Time" },
|
||||
@ -50,17 +50,15 @@ namespace CompatBot.Utils
|
||||
return false;
|
||||
|
||||
dateTime = dateTime.ToUpperInvariant();
|
||||
if (char.IsDigit(dateTime[dateTime.Length - 1]))
|
||||
{
|
||||
if (char.IsDigit(dateTime[^1]))
|
||||
return DateTime.TryParse(dateTime, out result);
|
||||
}
|
||||
|
||||
var cutIdx = dateTime.LastIndexOf(' ');
|
||||
if (cutIdx < 0)
|
||||
return false;
|
||||
|
||||
var tza = dateTime.Substring(cutIdx + 1);
|
||||
dateTime = dateTime.Substring(0, cutIdx);
|
||||
var tza = dateTime[(cutIdx+1)..];
|
||||
dateTime = dateTime[..cutIdx];
|
||||
if (TimeZoneMap.TryGetValue(tza, out var tzi))
|
||||
{
|
||||
if (!DateTime.TryParse(dateTime, out result))
|
||||
@ -74,14 +72,13 @@ namespace CompatBot.Utils
|
||||
}
|
||||
|
||||
|
||||
public static DateTime Normalize(this DateTime date)
|
||||
{
|
||||
if (date.Kind == DateTimeKind.Utc)
|
||||
return date;
|
||||
if (date.Kind == DateTimeKind.Local)
|
||||
return date.ToUniversalTime();
|
||||
return date.AsUtc();
|
||||
}
|
||||
public static DateTime Normalize(this DateTime date) =>
|
||||
date.Kind switch
|
||||
{
|
||||
DateTimeKind.Utc => date,
|
||||
DateTimeKind.Local => date.ToUniversalTime(),
|
||||
_ => date.AsUtc(),
|
||||
};
|
||||
|
||||
public static List<string> GetSupportedTimeZoneAbbreviations() => TimeZoneMap.Keys.ToList();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user