1
0
Fork 1
mirror of https://github.com/TeamOctolings/Octobot.git synced 2025-05-10 16:03:15 +03:00

Backfill member data when a guild is loaded or a new member joins it (#77)

This PR backfills member data when a guild is loaded or a new member
joins it. The reason for that is some actions that happen on member tick
(default role grant, nickname filtering) would only occur if a member
had data related to them (due to being banned or setting a reminder). In
addition, the `.editorconfig` was updated with new inspections provided
by a new release of Rider, 2023.2
See explanations for some changes in comments.

---------

Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com>
This commit is contained in:
Octol1ttle 2023-08-04 18:52:54 +05:00 committed by GitHub
parent d023033ed4
commit e9f7825e4a
Signed by: GitHub
GPG key ID: 4AEE18F83AFDEB23
10 changed files with 61 additions and 35 deletions

View file

@ -43,7 +43,13 @@ public class GuildLoadedResponder : IResponder<IGuildCreate>
var guild = gatewayEvent.Guild.AsT0;
_logger.LogInformation("Joined guild \"{Name}\"", guild.Name);
var cfg = await _guildData.GetSettings(guild.ID, ct);
var data = await _guildData.GetData(guild.ID, ct);
var cfg = data.Settings;
foreach (var member in guild.Members.Where(m => m.User.HasValue))
{
data.GetOrCreateMemberData(member.User.Value.ID);
}
if (!GuildSettings.ReceiveStartupMessages.Get(cfg))
{
return Result.FromSuccess();

View file

@ -38,12 +38,13 @@ public class GuildMemberJoinedResponder : IResponder<IGuildMemberAdd>
var data = await _guildData.GetData(gatewayEvent.GuildID, ct);
var cfg = data.Settings;
var memberData = data.GetOrCreateMemberData(user.ID);
if (GuildSettings.ReturnRolesOnRejoin.Get(cfg))
{
var result = await _guildApi.ModifyGuildMemberAsync(
gatewayEvent.GuildID, user.ID,
roles: data.GetMemberData(user.ID).Roles.ConvertAll(r => r.ToSnowflake()), ct: ct);
roles: memberData.Roles.ConvertAll(r => r.ToSnowflake()), ct: ct);
if (!result.IsSuccess)
{
return Result.FromError(result.Error);