expose vanity and colors and update from bot

This commit is contained in:
azyges
2025-09-26 18:00:46 +09:00
parent 7271e007cd
commit f5d621e354
5 changed files with 135 additions and 16 deletions

View File

@@ -1,4 +1,4 @@
using Discord;
using Discord;
using Discord.Interactions;
using Discord.Rest;
using Discord.WebSocket;
@@ -384,13 +384,50 @@ internal class DiscordBot : IHostedService
_logger.LogInformation($"Checking Group: {group.GID} [{group.Alias}], owned by {group.OwnerUID} ({groupPrimaryUser}), User in Roles: {string.Join(", ", discordUser?.RoleIds ?? new List<ulong>())}");
if (lodestoneUser == null || discordUser == null || !discordUser.RoleIds.Any(allowedRoleIds.Keys.Contains))
var hasAllowedRole = lodestoneUser != null && discordUser != null && discordUser.RoleIds.Any(allowedRoleIds.Keys.Contains);
if (!hasAllowedRole)
{
await _botServices.LogToChannel($"VANITY GID REMOVAL: <@{lodestoneUser?.DiscordId ?? 0}> ({lodestoneUser?.User?.UID}) - GID: {group.GID}, Vanity: {group.Alias}").ConfigureAwait(false);
_logger.LogInformation($"User {lodestoneUser?.User?.UID ?? "unknown"} not in allowed roles, deleting group alias for {group.GID}");
group.Alias = null;
db.Update(group);
if (lodestoneUser?.User != null)
{
lodestoneUser.User.HasVanity = false;
db.Update(lodestoneUser.User);
var secondaryUsers = await db.Auth.Include(u => u.User)
.Where(u => u.PrimaryUserUID == lodestoneUser.User.UID).ToListAsync().ConfigureAwait(false);
foreach (var secondaryUser in secondaryUsers)
{
secondaryUser.User.HasVanity = false;
db.Update(secondaryUser.User);
}
}
await db.SaveChangesAsync(token).ConfigureAwait(false);
}
else if (lodestoneUser?.User != null && lodestoneUser.User.HasVanity != true)
{
lodestoneUser.User.HasVanity = true;
db.Update(lodestoneUser.User);
var secondaryUsers = await db.Auth.Include(u => u.User)
.Where(u => u.PrimaryUserUID == lodestoneUser.User.UID).ToListAsync().ConfigureAwait(false);
foreach (var secondaryUser in secondaryUsers)
{
if (secondaryUser.User.HasVanity != true)
{
secondaryUser.User.HasVanity = true;
db.Update(secondaryUser.User);
}
}
await db.SaveChangesAsync(token).ConfigureAwait(false);
}
}
@@ -400,22 +437,55 @@ internal class DiscordBot : IHostedService
var discordUser = await restGuild.GetUserAsync(lodestoneAuth.DiscordId).ConfigureAwait(false);
_logger.LogInformation($"Checking User: {lodestoneAuth.DiscordId}, {lodestoneAuth.User.UID} ({lodestoneAuth.User.Alias}), User in Roles: {string.Join(", ", discordUser?.RoleIds ?? new List<ulong>())}");
if (discordUser == null || !discordUser.RoleIds.Any(u => allowedRoleIds.Keys.Contains(u)))
var hasAllowedRole = discordUser != null && discordUser.RoleIds.Any(u => allowedRoleIds.Keys.Contains(u));
if (!hasAllowedRole)
{
_logger.LogInformation($"User {lodestoneAuth.User.UID} not in allowed roles, deleting alias");
await _botServices.LogToChannel($"VANITY UID REMOVAL: <@{lodestoneAuth.DiscordId}> - UID: {lodestoneAuth.User.UID}, Vanity: {lodestoneAuth.User.Alias}").ConfigureAwait(false);
lodestoneAuth.User.Alias = null;
lodestoneAuth.User.HasVanity = false;
var secondaryUsers = await db.Auth.Include(u => u.User).Where(u => u.PrimaryUserUID == lodestoneAuth.User.UID).ToListAsync().ConfigureAwait(false);
foreach (var secondaryUser in secondaryUsers)
{
_logger.LogInformation($"Secondary User {secondaryUser.User.UID} not in allowed roles, deleting alias");
secondaryUser.User.Alias = null;
secondaryUser.User.HasVanity = false;
db.Update(secondaryUser.User);
}
db.Update(lodestoneAuth.User);
await db.SaveChangesAsync(token).ConfigureAwait(false);
}
else
{
var secondaryUsers = await db.Auth.Include(u => u.User)
.Where(u => u.PrimaryUserUID == lodestoneAuth.User.UID).ToListAsync().ConfigureAwait(false);
var hasChanges = false;
if (lodestoneAuth.User.HasVanity != true)
{
lodestoneAuth.User.HasVanity = true;
db.Update(lodestoneAuth.User);
hasChanges = true;
}
foreach (var secondaryUser in secondaryUsers)
{
if (secondaryUser.User.HasVanity != true)
{
secondaryUser.User.HasVanity = true;
db.Update(secondaryUser.User);
hasChanges = true;
}
}
if (hasChanges)
{
await db.SaveChangesAsync(token).ConfigureAwait(false);
}
}
}
private async Task UpdateStatusAsync(CancellationToken token)