1
0
Fork 1
mirror of https://github.com/TeamOctolings/Octobot.git synced 2025-04-20 00:43:36 +03:00

Resolving issues...

Signed-off-by: Macintosh II <mctaylxrs@outlook.com>
This commit is contained in:
Macintxsh 2023-09-21 20:09:06 +03:00
parent a1e6b8059e
commit d70b315c66
Signed by: mctaylors
GPG key ID: 361D326747B61E65
2 changed files with 38 additions and 25 deletions

View file

@ -133,11 +133,16 @@ public class MuteCommandGroup : CommandGroup
var until = DateTimeOffset.UtcNow.Add(duration); // >:) var until = DateTimeOffset.UtcNow.Add(duration); // >:)
var memberData = data.GetOrCreateMemberData(target.ID); var memberData = data.GetOrCreateMemberData(target.ID);
memberData.MutedUntil = DateTimeOffset.UtcNow.Add(duration); memberData.MutedUntil = until;
var assignRoles = new List<Snowflake> var assignRoles = new List<Snowflake>
{ {
GuildSettings.MuteRole.Get(data.Settings) GuildSettings.MuteRole.Get(data.Settings)
}; };
if (!GuildSettings.RemoveRolesOnMute.Get(data.Settings))
{
assignRoles.AddRange(memberData.Roles.ConvertAll(r => r.ToSnowflake()));
}
var muteResult = await _guildApi.ModifyGuildMemberAsync( var muteResult = await _guildApi.ModifyGuildMemberAsync(
guildId, target.ID, roles: assignRoles, guildId, target.ID, roles: assignRoles,
reason: $"({user.GetTag()}) {reason}".EncodeHeader(), ct: ct); reason: $"({user.GetTag()}) {reason}".EncodeHeader(), ct: ct);
@ -170,7 +175,7 @@ public class MuteCommandGroup : CommandGroup
IUser target, string reason, TimeSpan duration, Snowflake guildId, GuildData data, Snowflake channelId, IUser target, string reason, TimeSpan duration, Snowflake guildId, GuildData data, Snowflake channelId,
IUser user, IUser currentUser, CancellationToken ct = default) IUser user, IUser currentUser, CancellationToken ct = default)
{ {
if (duration.Days >= 28) if (duration.TotalDays >= 28)
{ {
var failedEmbed = new EmbedBuilder().WithSmallTitle(Messages.BotCannotMuteTarget, currentUser) var failedEmbed = new EmbedBuilder().WithSmallTitle(Messages.BotCannotMuteTarget, currentUser)
.WithDescription(Messages.DurationRequiredForTimeOuts) .WithDescription(Messages.DurationRequiredForTimeOuts)

View file

@ -79,30 +79,9 @@ public sealed partial class MemberUpdateService : BackgroundService
{ {
var failedResults = new List<Result>(); var failedResults = new List<Result>();
var id = data.Id.ToSnowflake(); var id = data.Id.ToSnowflake();
if (DateTimeOffset.UtcNow > data.BannedUntil)
{
var unbanResult = await _guildApi.RemoveGuildBanAsync(
guildId, id, Messages.PunishmentExpired.EncodeHeader(), ct);
if (unbanResult.IsSuccess)
{
data.BannedUntil = null;
}
return unbanResult; var punishmentsResult = await CheckMemberPunishmentsAsync(guildId, id, data, ct);
} failedResults.AddIfFailed(punishmentsResult);
if (DateTimeOffset.UtcNow > data.MutedUntil)
{
var unmuteResult = await _guildApi.ModifyGuildMemberAsync(
guildId, id, roles: data.Roles.ConvertAll(r => r.ToSnowflake()),
reason: Messages.PunishmentExpired.EncodeHeader(), ct: ct);
if (unmuteResult.IsSuccess)
{
data.MutedUntil = null;
}
return unmuteResult;
}
if (defaultRole.Value is not 0 && !data.Roles.Contains(defaultRole.Value)) if (defaultRole.Value is not 0 && !data.Roles.Contains(defaultRole.Value))
{ {
@ -138,6 +117,35 @@ public sealed partial class MemberUpdateService : BackgroundService
return failedResults.AggregateErrors(); return failedResults.AggregateErrors();
} }
private async Task<Result> CheckMemberPunishmentsAsync(
Snowflake guildId, Snowflake id, MemberData data, CancellationToken ct)
{
if (DateTimeOffset.UtcNow > data.BannedUntil)
{
var unbanResult = await _guildApi.RemoveGuildBanAsync(
guildId, id, Messages.PunishmentExpired.EncodeHeader(), ct);
if (unbanResult.IsSuccess)
{
data.BannedUntil = null;
}
return unbanResult;
}
if (DateTimeOffset.UtcNow > data.MutedUntil)
{
var unmuteResult = await _guildApi.ModifyGuildMemberAsync(
guildId, id, roles: data.Roles.ConvertAll(r => r.ToSnowflake()),
reason: Messages.PunishmentExpired.EncodeHeader(), ct: ct);
if (unmuteResult.IsSuccess)
{
data.MutedUntil = null;
}
}
return Result.FromSuccess();
}
private async Task<Result> FilterNicknameAsync(Snowflake guildId, IUser user, IGuildMember member, private async Task<Result> FilterNicknameAsync(Snowflake guildId, IUser user, IGuildMember member,
CancellationToken ct) CancellationToken ct)
{ {