mirror of
https://github.com/NoiTheCat/BirthdayBot.git
synced 2024-11-24 09:24:12 +00:00
Merge pull request #53 from NoiTheCat/dev/new-usernames
New username system support
This commit is contained in:
commit
9d32b6c8c5
4 changed files with 25 additions and 11 deletions
|
@ -40,7 +40,9 @@ public class ExportModule : BotModuleBase {
|
||||||
if (user == null) continue; // User disappeared in the instant between getting list and processing
|
if (user == null) continue; // User disappeared in the instant between getting list and processing
|
||||||
writer.Write($"● {Common.MonthNames[item.BirthMonth]}-{item.BirthDay:00}: ");
|
writer.Write($"● {Common.MonthNames[item.BirthMonth]}-{item.BirthDay:00}: ");
|
||||||
writer.Write(item.UserId);
|
writer.Write(item.UserId);
|
||||||
writer.Write(" " + user.Username + "#" + user.Discriminator);
|
writer.Write(" " + user.Username);
|
||||||
|
if (user.DiscriminatorValue != 0) writer.Write($"#{user.Discriminator}");
|
||||||
|
if (user.GlobalName != null) writer.Write($" ({user.GlobalName})");
|
||||||
if (user.Nickname != null) writer.Write(" - Nickname: " + user.Nickname);
|
if (user.Nickname != null) writer.Write(" - Nickname: " + user.Nickname);
|
||||||
if (item.TimeZone != null) writer.Write(" | Time zone: " + item.TimeZone);
|
if (item.TimeZone != null) writer.Write(" | Time zone: " + item.TimeZone);
|
||||||
writer.WriteLine();
|
writer.WriteLine();
|
||||||
|
@ -67,16 +69,19 @@ public class ExportModule : BotModuleBase {
|
||||||
}
|
}
|
||||||
|
|
||||||
// Conforming to RFC 4180; with header
|
// Conforming to RFC 4180; with header
|
||||||
writer.Write("UserId,Username,Nickname,MonthDayDisp,Month,Day,TimeZone");
|
writer.Write("UserId,Username,DisplayName,Nickname,MonthDayDisp,Month,Day,TimeZone");
|
||||||
writer.Write("\r\n"); // crlf line break is specified by the standard
|
writer.Write("\r\n"); // crlf line break is specified by the standard
|
||||||
foreach (var item in list) {
|
foreach (var item in list) {
|
||||||
var user = guild.GetUser(item.UserId);
|
var user = guild.GetUser(item.UserId);
|
||||||
if (user == null) continue; // User disappeared in the instant between getting list and processing
|
if (user == null) continue; // User disappeared in the instant between getting list and processing
|
||||||
writer.Write(item.UserId);
|
writer.Write(item.UserId);
|
||||||
writer.Write(',');
|
writer.Write(',');
|
||||||
writer.Write(csvEscape(user.Username + "#" + user.Discriminator));
|
writer.Write(csvEscape(user.Username));
|
||||||
|
if (user.DiscriminatorValue != 0) writer.Write($"#{user.Discriminator}");
|
||||||
writer.Write(',');
|
writer.Write(',');
|
||||||
if (user.Nickname != null) writer.Write(user.Nickname);
|
if (user.GlobalName != null) writer.Write(csvEscape(user.GlobalName));
|
||||||
|
writer.Write(',');
|
||||||
|
if (user.Nickname != null) writer.Write(csvEscape(user.Nickname));
|
||||||
writer.Write(',');
|
writer.Write(',');
|
||||||
writer.Write($"{Common.MonthNames[item.BirthMonth]}-{item.BirthDay:00}");
|
writer.Write($"{Common.MonthNames[item.BirthMonth]}-{item.BirthDay:00}");
|
||||||
writer.Write(',');
|
writer.Write(',');
|
||||||
|
|
|
@ -22,7 +22,7 @@
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="CommandLineParser" Version="2.9.1" />
|
<PackageReference Include="CommandLineParser" Version="2.9.1" />
|
||||||
<PackageReference Include="Discord.Net" Version="3.10.0" />
|
<PackageReference Include="Discord.Net" Version="3.12.0" />
|
||||||
<PackageReference Include="EFCore.NamingConventions" Version="7.0.2" />
|
<PackageReference Include="EFCore.NamingConventions" Version="7.0.2" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.4">
|
||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
|
18
Common.cs
18
Common.cs
|
@ -11,7 +11,7 @@ static class Common {
|
||||||
static string escapeFormattingCharacters(string input) {
|
static string escapeFormattingCharacters(string input) {
|
||||||
var result = new StringBuilder();
|
var result = new StringBuilder();
|
||||||
foreach (var c in input) {
|
foreach (var c in input) {
|
||||||
if (c is '\\' or '_' or '~' or '*' or '@') {
|
if (c is '\\' or '_' or '~' or '*' or '@' or '`') {
|
||||||
result.Append('\\');
|
result.Append('\\');
|
||||||
}
|
}
|
||||||
result.Append(c);
|
result.Append(c);
|
||||||
|
@ -19,11 +19,19 @@ static class Common {
|
||||||
return result.ToString();
|
return result.ToString();
|
||||||
}
|
}
|
||||||
|
|
||||||
var username = escapeFormattingCharacters(member.Username);
|
if (member.DiscriminatorValue == 0) {
|
||||||
if (member.Nickname != null) {
|
var username = escapeFormattingCharacters(member.GlobalName ?? member.Username);
|
||||||
return $"**{escapeFormattingCharacters(member.Nickname)}** ({username}#{member.Discriminator})";
|
if (member.Nickname != null) {
|
||||||
|
return $"{escapeFormattingCharacters(member.Nickname)} ({username})";
|
||||||
|
}
|
||||||
|
return username;
|
||||||
|
} else {
|
||||||
|
var username = escapeFormattingCharacters(member.Username);
|
||||||
|
if (member.Nickname != null) {
|
||||||
|
return $"{escapeFormattingCharacters(member.Nickname)} ({username}#{member.Discriminator})";
|
||||||
|
}
|
||||||
|
return $"{username}#{member.Discriminator}";
|
||||||
}
|
}
|
||||||
return $"**{username}**#{member.Discriminator}";
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public static Dictionary<int, string> MonthNames { get; } = new() {
|
public static Dictionary<int, string> MonthNames { get; } = new() {
|
||||||
|
|
|
@ -76,7 +76,8 @@ class ShardManager : IDisposable {
|
||||||
DefaultRetryMode = RetryMode.Retry502 | RetryMode.RetryTimeouts,
|
DefaultRetryMode = RetryMode.Retry502 | RetryMode.RetryTimeouts,
|
||||||
GatewayIntents = GatewayIntents.Guilds | GatewayIntents.GuildMembers,
|
GatewayIntents = GatewayIntents.Guilds | GatewayIntents.GuildMembers,
|
||||||
SuppressUnknownDispatchWarnings = true,
|
SuppressUnknownDispatchWarnings = true,
|
||||||
LogGatewayIntentWarnings = false
|
LogGatewayIntentWarnings = false,
|
||||||
|
FormatUsersInBidirectionalUnicode = false
|
||||||
};
|
};
|
||||||
var services = new ServiceCollection()
|
var services = new ServiceCollection()
|
||||||
.AddSingleton(s => new ShardInstance(this, s))
|
.AddSingleton(s => new ShardInstance(this, s))
|
||||||
|
|
Loading…
Reference in a new issue