mirror of
https://github.com/TeamOctolings/Octobot.git
synced 2025-04-20 00:43:36 +03:00
More fixups
Signed-off-by: Octol1ttle <l1ttleofficial@outlook.com>
This commit is contained in:
parent
9d7ebb8fec
commit
20ffbbaafb
5 changed files with 29 additions and 17 deletions
|
@ -141,6 +141,7 @@ public class BanCommandGroup : CommandGroup {
|
||||||
var memberData = data.GetMemberData(target.ID);
|
var memberData = data.GetMemberData(target.ID);
|
||||||
memberData.BannedUntil
|
memberData.BannedUntil
|
||||||
= duration is not null ? DateTimeOffset.UtcNow.Add(duration.Value) : DateTimeOffset.MaxValue;
|
= duration is not null ? DateTimeOffset.UtcNow.Add(duration.Value) : DateTimeOffset.MaxValue;
|
||||||
|
memberData.Roles.Clear();
|
||||||
|
|
||||||
responseEmbed = new EmbedBuilder().WithSmallTitle(
|
responseEmbed = new EmbedBuilder().WithSmallTitle(
|
||||||
string.Format(Messages.UserBanned, target.GetTag()), target)
|
string.Format(Messages.UserBanned, target.GetTag()), target)
|
||||||
|
|
|
@ -71,7 +71,8 @@ public class KickCommandGroup : CommandGroup {
|
||||||
if (!currentUserResult.IsDefined(out var currentUser))
|
if (!currentUserResult.IsDefined(out var currentUser))
|
||||||
return Result.FromError(currentUserResult);
|
return Result.FromError(currentUserResult);
|
||||||
|
|
||||||
var cfg = await _dataService.GetConfiguration(guildId.Value, CancellationToken);
|
var data = await _dataService.GetData(guildId.Value, CancellationToken);
|
||||||
|
var cfg = data.Configuration;
|
||||||
Messages.Culture = cfg.GetCulture();
|
Messages.Culture = cfg.GetCulture();
|
||||||
|
|
||||||
var memberResult = await _guildApi.GetGuildMemberAsync(guildId.Value, target.ID, CancellationToken);
|
var memberResult = await _guildApi.GetGuildMemberAsync(guildId.Value, target.ID, CancellationToken);
|
||||||
|
@ -123,6 +124,7 @@ public class KickCommandGroup : CommandGroup {
|
||||||
ct: CancellationToken);
|
ct: CancellationToken);
|
||||||
if (!kickResult.IsSuccess)
|
if (!kickResult.IsSuccess)
|
||||||
return Result.FromError(kickResult.Error);
|
return Result.FromError(kickResult.Error);
|
||||||
|
data.GetMemberData(target.ID).Roles.Clear();
|
||||||
|
|
||||||
responseEmbed = new EmbedBuilder().WithSmallTitle(
|
responseEmbed = new EmbedBuilder().WithSmallTitle(
|
||||||
string.Format(Messages.UserKicked, target.GetTag()), target)
|
string.Format(Messages.UserKicked, target.GetTag()), target)
|
||||||
|
|
|
@ -2,6 +2,9 @@ using Remora.Rest.Core;
|
||||||
|
|
||||||
namespace Boyfriend.Data;
|
namespace Boyfriend.Data;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stores information about a member
|
||||||
|
/// </summary>
|
||||||
public class MemberData {
|
public class MemberData {
|
||||||
public MemberData(ulong id, DateTimeOffset? bannedUntil) {
|
public MemberData(ulong id, DateTimeOffset? bannedUntil) {
|
||||||
Id = id;
|
Id = id;
|
||||||
|
|
|
@ -208,6 +208,7 @@ public class MessageEditedResponder : IResponder<IMessageUpdate> {
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Handles sending a guild's <see cref="GuildConfiguration.WelcomeMessage" /> if one is set.
|
/// Handles sending a guild's <see cref="GuildConfiguration.WelcomeMessage" /> if one is set.
|
||||||
|
/// If <see cref="GuildConfiguration.ReturnRolesOnRejoin"/> is enabled, roles will be returned.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <seealso cref="GuildConfiguration.WelcomeMessage" />
|
/// <seealso cref="GuildConfiguration.WelcomeMessage" />
|
||||||
public class GuildMemberAddResponder : IResponder<IGuildMemberAdd> {
|
public class GuildMemberAddResponder : IResponder<IGuildMemberAdd> {
|
||||||
|
@ -223,19 +224,22 @@ public class GuildMemberAddResponder : IResponder<IGuildMemberAdd> {
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Result> RespondAsync(IGuildMemberAdd gatewayEvent, CancellationToken ct = default) {
|
public async Task<Result> RespondAsync(IGuildMemberAdd gatewayEvent, CancellationToken ct = default) {
|
||||||
var guildConfiguration = await _dataService.GetConfiguration(gatewayEvent.GuildID, ct);
|
|
||||||
if (guildConfiguration.PublicFeedbackChannel is 0)
|
|
||||||
return Result.FromSuccess();
|
|
||||||
if (guildConfiguration.WelcomeMessage is "off" or "disable" or "disabled")
|
|
||||||
return Result.FromSuccess();
|
|
||||||
|
|
||||||
Messages.Culture = guildConfiguration.GetCulture();
|
|
||||||
var welcomeMessage = guildConfiguration.WelcomeMessage is "default" or "reset"
|
|
||||||
? Messages.DefaultWelcomeMessage
|
|
||||||
: guildConfiguration.WelcomeMessage;
|
|
||||||
|
|
||||||
if (!gatewayEvent.User.IsDefined(out var user))
|
if (!gatewayEvent.User.IsDefined(out var user))
|
||||||
return Result.FromError(new ArgumentNullError(nameof(gatewayEvent.User)));
|
return Result.FromError(new ArgumentNullError(nameof(gatewayEvent.User)));
|
||||||
|
var data = await _dataService.GetData(gatewayEvent.GuildID, ct);
|
||||||
|
var cfg = data.Configuration;
|
||||||
|
if (cfg.PublicFeedbackChannel is 0 || cfg.WelcomeMessage is "off" or "disable" or "disabled")
|
||||||
|
return Result.FromSuccess();
|
||||||
|
if (cfg.ReturnRolesOnRejoin) {
|
||||||
|
var result = await _guildApi.ModifyGuildMemberAsync(
|
||||||
|
gatewayEvent.GuildID, user.ID, roles: data.GetMemberData(user.ID).Roles, ct: ct);
|
||||||
|
if (!result.IsSuccess) return Result.FromError(result.Error);
|
||||||
|
}
|
||||||
|
|
||||||
|
Messages.Culture = data.Culture;
|
||||||
|
var welcomeMessage = cfg.WelcomeMessage is "default" or "reset"
|
||||||
|
? Messages.DefaultWelcomeMessage
|
||||||
|
: cfg.WelcomeMessage;
|
||||||
|
|
||||||
var guildResult = await _guildApi.GetGuildAsync(gatewayEvent.GuildID, ct: ct);
|
var guildResult = await _guildApi.GetGuildAsync(gatewayEvent.GuildID, ct: ct);
|
||||||
if (!guildResult.IsDefined(out var guild)) return Result.FromError(guildResult);
|
if (!guildResult.IsDefined(out var guild)) return Result.FromError(guildResult);
|
||||||
|
@ -249,7 +253,7 @@ public class GuildMemberAddResponder : IResponder<IGuildMemberAdd> {
|
||||||
if (!embed.IsDefined(out var built)) return Result.FromError(embed);
|
if (!embed.IsDefined(out var built)) return Result.FromError(embed);
|
||||||
|
|
||||||
return (Result)await _channelApi.CreateMessageAsync(
|
return (Result)await _channelApi.CreateMessageAsync(
|
||||||
guildConfiguration.PublicFeedbackChannel.ToDiscordSnowflake(), embeds: new[] { built },
|
cfg.PublicFeedbackChannel.ToDiscordSnowflake(), embeds: new[] { built },
|
||||||
allowedMentions: Boyfriend.NoMentions, ct: ct);
|
allowedMentions: Boyfriend.NoMentions, ct: ct);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -146,7 +146,8 @@ public class GuildUpdateService : BackgroundService {
|
||||||
var storedEvent = data.ScheduledEvents[scheduledEvent.ID.Value];
|
var storedEvent = data.ScheduledEvents[scheduledEvent.ID.Value];
|
||||||
if (storedEvent.Status == scheduledEvent.Status) {
|
if (storedEvent.Status == scheduledEvent.Status) {
|
||||||
if (DateTimeOffset.UtcNow >= scheduledEvent.ScheduledStartTime) {
|
if (DateTimeOffset.UtcNow >= scheduledEvent.ScheduledStartTime) {
|
||||||
if (scheduledEvent.Status is not GuildScheduledEventStatus.Active) {
|
if (data.Configuration.AutoStartEvents
|
||||||
|
&& scheduledEvent.Status is not GuildScheduledEventStatus.Active) {
|
||||||
var startResult = await _eventApi.ModifyGuildScheduledEventAsync(
|
var startResult = await _eventApi.ModifyGuildScheduledEventAsync(
|
||||||
guildId, scheduledEvent.ID,
|
guildId, scheduledEvent.ID,
|
||||||
status: GuildScheduledEventStatus.Active, ct: ct);
|
status: GuildScheduledEventStatus.Active, ct: ct);
|
||||||
|
@ -155,9 +156,10 @@ public class GuildUpdateService : BackgroundService {
|
||||||
"Error in automatic scheduled event start request.\n{ErrorMessage}",
|
"Error in automatic scheduled event start request.\n{ErrorMessage}",
|
||||||
startResult.Error.Message);
|
startResult.Error.Message);
|
||||||
}
|
}
|
||||||
} else if (DateTimeOffset.UtcNow
|
} else if (data.Configuration.EventEarlyNotificationOffset != TimeSpan.Zero
|
||||||
>= scheduledEvent.ScheduledStartTime - data.Configuration.EventEarlyNotificationOffset
|
&& !storedEvent.EarlyNotificationSent
|
||||||
&& !storedEvent.EarlyNotificationSent) {
|
&& DateTimeOffset.UtcNow
|
||||||
|
>= scheduledEvent.ScheduledStartTime - data.Configuration.EventEarlyNotificationOffset) {
|
||||||
var earlyResult = await SendScheduledEventUpdatedMessage(scheduledEvent, data, true, ct);
|
var earlyResult = await SendScheduledEventUpdatedMessage(scheduledEvent, data, true, ct);
|
||||||
if (earlyResult.IsSuccess)
|
if (earlyResult.IsSuccess)
|
||||||
storedEvent.EarlyNotificationSent = true;
|
storedEvent.EarlyNotificationSent = true;
|
||||||
|
|
Loading…
Add table
Reference in a new issue