54 lines
No EOL
2.5 KiB
C#
54 lines
No EOL
2.5 KiB
C#
// Project Makoto
|
|
// Copyright (C) 2024 Fortunevale
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY
|
|
|
|
namespace ProjectMakoto.Commands;
|
|
|
|
internal sealed class ManualBumpCommand : BaseCommand
|
|
{
|
|
public override async Task<bool> BeforeExecution(SharedCommandContext ctx) => (await this.CheckPermissions(Permissions.ManageMessages));
|
|
|
|
public override Task ExecuteCommand(SharedCommandContext ctx, Dictionary<string, object> arguments)
|
|
{
|
|
return Task.Run(async () =>
|
|
{
|
|
var CommandKey = this.t.Commands.Moderation.ManualBump;
|
|
|
|
if (ctx.DbGuild.BumpReminder.ChannelId == 0)
|
|
{
|
|
_ = this.RespondOrEdit(new DiscordEmbedBuilder().WithDescription(this.GetString(CommandKey.NotSetUp, true)).AsError(ctx));
|
|
return;
|
|
}
|
|
|
|
DiscordButtonComponent YesButton = new(ButtonStyle.Success, Guid.NewGuid().ToString(), this.GetString(this.t.Common.Yes), false, DiscordEmoji.FromUnicode("✅").ToComponent());
|
|
|
|
_ = await this.RespondOrEdit(new DiscordMessageBuilder()
|
|
.AddEmbed(new DiscordEmbedBuilder().WithDescription(this.GetString(CommandKey.Warning, true)).AsWarning(ctx))
|
|
.AddComponents(new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(this.t.Common.No), false, DiscordEmoji.FromUnicode("❌").ToComponent()), YesButton));
|
|
|
|
var e = await ctx.ResponseMessage.WaitForButtonAsync(ctx.User);
|
|
|
|
if (e.TimedOut || e.GetCustomId() != YesButton.CustomId)
|
|
{
|
|
this.DeleteOrInvalidate();
|
|
return;
|
|
}
|
|
|
|
var channel = ctx.Guild.GetChannel(ctx.DbGuild.BumpReminder.ChannelId);
|
|
|
|
ctx.DbGuild.BumpReminder.LastBump = DateTime.UtcNow;
|
|
ctx.DbGuild.BumpReminder.LastReminder = DateTime.UtcNow;
|
|
ctx.DbGuild.BumpReminder.BumpsMissed = 0;
|
|
ctx.DbGuild.BumpReminder.LastUserId = 0;
|
|
ctx.Bot.BumpReminder.ScheduleBump(ctx.Client, ctx.Guild.Id);
|
|
|
|
_ = channel.DeleteMessageAsync(await channel.GetMessageAsync(ctx.DbGuild.BumpReminder.PersistentMessageId));
|
|
this.DeleteOrInvalidate();
|
|
});
|
|
}
|
|
} |