Compare commits
95 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
5c4fba0757 | ||
|
|
2af2a00032 | ||
|
|
d0cafa88af | ||
|
|
714f0b6d77 | ||
|
|
f135826ef4 | ||
|
|
b1047bb3c2 | ||
|
|
5901c9a13d | ||
|
|
4cb76d7a9d | ||
|
|
4f0bc4f6ad | ||
|
|
50c60bf0da | ||
|
|
1c3aa23a76 | ||
|
|
7698e14c3e | ||
|
|
254375e71d | ||
|
|
833b1c79f9 | ||
|
|
bbb9935205 | ||
|
|
6f1155c8c4 | ||
|
|
2e73d66dc2 | ||
|
|
4705cb5f26 | ||
|
|
e58aca5af7 | ||
|
|
b7d814936f | ||
|
|
5d0478bf79 | ||
|
|
d22aecdf79 | ||
|
|
eadcd7ee85 | ||
|
|
02be184d6b | ||
|
|
768c11b424 | ||
|
|
72041a034c | ||
|
|
6766a6b51e | ||
|
|
8d160455bd | ||
|
|
3093c2ae29 | ||
|
|
3a73ca58ec | ||
|
|
389c32a238 | ||
|
|
94ed0df9a7 | ||
|
|
c8a21b0b70 | ||
|
|
d674f8404c | ||
|
|
ae09d35b0e | ||
|
|
d57a294f49 | ||
|
|
c393de1082 | ||
|
|
270c500410 | ||
|
|
9857a77dd4 | ||
|
|
b807ebda4d | ||
|
|
c800526ca8 | ||
|
|
c9c220a8ea | ||
|
|
6dbb5bd738 | ||
|
|
2024d85a82 | ||
|
|
ca9b970829 | ||
|
|
2b4e6b59a1 | ||
|
|
8b03d88106 | ||
|
|
92cd485f9c | ||
|
|
e04ecc09eb | ||
|
|
b7cd7c8480 | ||
|
|
6768421fee | ||
|
|
772d8715a5 | ||
|
|
77bcd25224 | ||
|
|
88f11da182 | ||
|
|
b44a6dbacc | ||
|
|
3cf99fd69d | ||
|
|
078d7984b8 | ||
|
|
6c15be31bd | ||
|
|
21d4be4239 | ||
|
|
b440e3fa60 | ||
|
|
805bba780e | ||
|
|
1035eeb1cf | ||
|
|
b38a91473e | ||
|
|
a9f7244b17 | ||
|
|
a6eafd3d05 | ||
|
|
6da3e2055b | ||
|
|
cc22de02c9 | ||
|
|
11dd71537d | ||
|
|
293ccd8c52 | ||
|
|
1b2fc0f3b9 | ||
|
|
a02fd32990 | ||
|
|
906c539cca | ||
|
|
a6ae872744 | ||
|
|
5181b4aaa3 | ||
|
|
e2cab675c8 | ||
|
|
a601dd13ef | ||
|
|
38922d93df | ||
|
|
7a9b9fc8e3 | ||
|
|
5ec50d9645 | ||
|
|
b9207c0271 | ||
|
|
d9b9c2a604 | ||
|
|
e9d438a860 | ||
|
|
db6cb7af0c | ||
|
|
8c0519048c | ||
|
|
59b7abf932 | ||
|
|
5dfc15fa83 | ||
|
|
159edca9e4 | ||
|
|
89463f8ed6 | ||
|
|
d3e8aa676e | ||
|
|
795a5211bf | ||
|
|
055d098d20 | ||
|
|
46dc0947c4 | ||
|
|
dac0a0a8b4 | ||
|
|
73d285c99d | ||
|
|
7f2b5b38f4 |
70 changed files with 501 additions and 275 deletions
5
.github/workflows/dev.yml
vendored
5
.github/workflows/dev.yml
vendored
|
|
@ -18,7 +18,7 @@ jobs:
|
|||
with:
|
||||
exclude_path: 'SecretsIgnore.txt'
|
||||
spellcheck:
|
||||
name: Clone Repository
|
||||
name: Spell Check
|
||||
runs-on: self-hosted
|
||||
steps:
|
||||
- name: Checkout Actions Repository
|
||||
|
|
@ -36,9 +36,10 @@ jobs:
|
|||
run: rm -rf ProjectMakotoTest/
|
||||
|
||||
- name: Setup .NET Core SDK
|
||||
uses: actions/setup-dotnet@v4
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: |
|
||||
10.0.100-preview.1.25120.13
|
||||
9.x
|
||||
|
||||
- name: "Clone Repository"
|
||||
|
|
|
|||
4
.github/workflows/main.yml
vendored
4
.github/workflows/main.yml
vendored
|
|
@ -22,7 +22,7 @@ jobs:
|
|||
known_hosts: ${{ secrets.SSH_KNOWN_HOST }}
|
||||
|
||||
- name: Setup .NET Core SDK 9.x
|
||||
uses: actions/setup-dotnet@v4
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: '9.x'
|
||||
|
||||
|
|
@ -106,7 +106,7 @@ jobs:
|
|||
|
||||
- name: Create Release
|
||||
if: ${{ !github.event.act }} # skip during local actions testing
|
||||
uses: ncipollo/release-action@v1.14.0
|
||||
uses: ncipollo/release-action@v1.20.0
|
||||
with:
|
||||
artifacts: "ProjectMakoto/ProjectMakoto/Release.zip"
|
||||
generateReleaseNotes: true
|
||||
|
|
|
|||
4
.github/workflows/preview.yml
vendored
4
.github/workflows/preview.yml
vendored
|
|
@ -50,7 +50,7 @@ jobs:
|
|||
known_hosts: ${{ secrets.SSH_KNOWN_HOST }}
|
||||
|
||||
- name: Setup .NET Core SDK 8.x
|
||||
uses: actions/setup-dotnet@v4
|
||||
uses: actions/setup-dotnet@v5
|
||||
with:
|
||||
dotnet-version: |
|
||||
9.x
|
||||
|
|
@ -135,7 +135,7 @@ jobs:
|
|||
|
||||
- name: Create Release
|
||||
if: ${{ !github.event.act }} # skip during local actions testing
|
||||
uses: ncipollo/release-action@v1.14.0
|
||||
uses: ncipollo/release-action@v1.20.0
|
||||
with:
|
||||
artifacts: "ProjectMakotoPreview/ProjectMakoto/Release.zip"
|
||||
generateReleaseNotes: true
|
||||
|
|
|
|||
2
Dependencies/Xorog.UniversalExtensions
vendored
2
Dependencies/Xorog.UniversalExtensions
vendored
|
|
@ -1 +1 @@
|
|||
Subproject commit dadeb77e1667b6785ee8368eb92b2bbe1efba06e
|
||||
Subproject commit cc41bea57617e81f116fbbae6e7de2f8d9ca3991
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 79e7cffb4e38d68d2af71d321d8698fd799b3e59
|
||||
Subproject commit 2ca985d24861f56feccc901357283dacc72182bf
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit b0318f5602b29482638a71dae7184b075bc58b5a
|
||||
Subproject commit f2b6f1aaa49060e0592986d93ef45694dc157f4f
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit 4e795fddc75a59f2512243f59c02de3d0823cdd2
|
||||
Subproject commit 3bb0c0e17764905e8931346e7a5a3526a0441b7c
|
||||
|
|
@ -1 +1 @@
|
|||
Subproject commit ea04fd278535c33a3b78d056adf6c25a5cb687bc
|
||||
Subproject commit 0e28d28f051edb2e7cfb9699d2d12f3dd49fac78
|
||||
|
|
@ -13,7 +13,7 @@ for /d /r %%i in (*deps*) do (
|
|||
|
||||
cd /d "%original_dir%"
|
||||
|
||||
git submodule update --init --depth 0
|
||||
REM git submodule update --init --depth 0
|
||||
|
||||
for /D %%i in (*) do (
|
||||
if /I "%%i" neq "deps" (
|
||||
|
|
|
|||
|
|
@ -334,6 +334,7 @@ public sealed class Bot
|
|||
}
|
||||
});
|
||||
|
||||
_ = this.CleanupOldPrunedMessages().Add(this);
|
||||
_ = this.ProcessDeletionRequests().Add(this);
|
||||
}).Add(this).IsVital();
|
||||
|
||||
|
|
@ -522,6 +523,42 @@ public sealed class Bot
|
|||
Environment.FailFast("Failed to exit");
|
||||
}
|
||||
|
||||
private async Task CleanupOldPrunedMessages()
|
||||
{
|
||||
_ = new Func<Task>(async () =>
|
||||
{
|
||||
_ = this.CleanupOldPrunedMessages().Add(this);
|
||||
}).CreateScheduledTask(DateTime.UtcNow.AddHours(24));
|
||||
|
||||
foreach (var guildDirectory in Directory.GetDirectories("WebServer").Select(x => new DirectoryInfo(x)))
|
||||
{
|
||||
if (guildDirectory.GetDirectories().Any(x => x.Name.Equals("DeletedMessages", StringComparison.CurrentCultureIgnoreCase)))
|
||||
{
|
||||
var deletedMessagesDirectory = guildDirectory.GetDirectories().First(x => x.Name.Equals("DeletedMessages", StringComparison.CurrentCultureIgnoreCase));
|
||||
foreach (var deletedMessageFile in deletedMessagesDirectory.GetFiles())
|
||||
{
|
||||
if (deletedMessageFile.LastWriteTimeUtc.GetTimespanSince() > TimeSpan.FromDays(30))
|
||||
{
|
||||
Log.Information("Deleting '{File}'..", deletedMessageFile.FullName);
|
||||
deletedMessageFile.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
if (deletedMessagesDirectory.GetFiles().Length == 0)
|
||||
{
|
||||
Log.Information("Deleting '{File}'..", deletedMessagesDirectory.FullName);
|
||||
deletedMessagesDirectory.Delete();
|
||||
}
|
||||
}
|
||||
|
||||
if (guildDirectory.GetFiles().Length == 0 && guildDirectory.GetDirectories().Length == 0)
|
||||
{
|
||||
Log.Information("Deleting '{File}'..", guildDirectory.FullName);
|
||||
guildDirectory.Delete();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private async Task ProcessDeletionRequests()
|
||||
{
|
||||
_ = new Func<Task>(async () =>
|
||||
|
|
|
|||
|
|
@ -253,10 +253,10 @@ public abstract class BaseCommand
|
|||
|
||||
#region RespondOrEdit
|
||||
public Task<DiscordMessage> RespondOrEdit(DiscordEmbed embed)
|
||||
=> this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
=> this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
public Task<DiscordMessage> RespondOrEdit(DiscordEmbedBuilder embed)
|
||||
=> this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.Build()));
|
||||
=> this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.Build()));
|
||||
|
||||
public Task<DiscordMessage> RespondOrEdit(string content)
|
||||
=> this.RespondOrEdit(new DiscordMessageBuilder().WithContent(content));
|
||||
|
|
@ -274,7 +274,9 @@ public abstract class BaseCommand
|
|||
foreach (var b in discordMessageBuilder.Files)
|
||||
files.Add(b.Filename, b.Stream);
|
||||
|
||||
if (discordMessageBuilder.Components.IsNotNullAndNotEmpty())
|
||||
_ = discordWebhookBuilder.AddComponents(discordMessageBuilder.Components);
|
||||
|
||||
_ = discordWebhookBuilder.AddEmbeds(discordMessageBuilder.Embeds);
|
||||
_ = discordWebhookBuilder.AddFiles(files);
|
||||
discordWebhookBuilder.Content = discordMessageBuilder.Content;
|
||||
|
|
@ -293,7 +295,9 @@ public abstract class BaseCommand
|
|||
foreach (var b in discordMessageBuilder.Files)
|
||||
files.Add(b.Filename, b.Stream);
|
||||
|
||||
if (discordMessageBuilder.Components.IsNotNullAndNotEmpty())
|
||||
_ = discordWebhookBuilder.AddComponents(discordMessageBuilder.Components);
|
||||
|
||||
_ = discordWebhookBuilder.AddEmbeds(discordMessageBuilder.Embeds);
|
||||
_ = discordWebhookBuilder.AddFiles(files);
|
||||
discordWebhookBuilder.Content = discordMessageBuilder.Content;
|
||||
|
|
@ -312,7 +316,9 @@ public abstract class BaseCommand
|
|||
foreach (var b in discordMessageBuilder.Files)
|
||||
files.Add(b.Filename, b.Stream);
|
||||
|
||||
if (discordMessageBuilder.Components.IsNotNullAndNotEmpty())
|
||||
_ = discordWebhookBuilder.AddComponents(discordMessageBuilder.Components);
|
||||
|
||||
_ = discordWebhookBuilder.AddEmbeds(discordMessageBuilder.Embeds);
|
||||
_ = discordWebhookBuilder.AddFiles(files);
|
||||
discordWebhookBuilder.Content = discordMessageBuilder.Content;
|
||||
|
|
@ -437,7 +443,7 @@ public abstract class BaseCommand
|
|||
async Task RefreshMessage()
|
||||
{
|
||||
var dropdown = new DiscordRoleSelectComponent(this.GetString(this.t.Commands.Common.Prompts.SelectARole), SelectionInteractionId, 1, 1, false);
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
|
||||
|
||||
if (Selected.IsNullOrWhiteSpace())
|
||||
_ = ConfirmSelectionButton.Disable();
|
||||
|
|
@ -541,7 +547,7 @@ public abstract class BaseCommand
|
|||
|
||||
this.ctx.Client.ComponentInteractionCreated -= RunInteraction;
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
|
||||
|
||||
if (ExceptionOccurred)
|
||||
return new InteractionResult<DiscordRole>(ThrownException);
|
||||
|
|
@ -578,7 +584,7 @@ public abstract class BaseCommand
|
|||
async Task RefreshMessage()
|
||||
{
|
||||
var dropdown = new DiscordChannelSelectComponent(this.GetString(this.t.Commands.Common.Prompts.SelectAChannel), channelTypes, SelectionInteractionId);
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
|
||||
|
||||
if (Selected.IsNullOrWhiteSpace())
|
||||
_ = ConfirmSelectionButton.Disable();
|
||||
|
|
@ -662,7 +668,7 @@ public abstract class BaseCommand
|
|||
}
|
||||
|
||||
this.ctx.Client.ComponentInteractionCreated -= RunInteraction;
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
|
||||
|
||||
if (ExceptionOccurred)
|
||||
return new InteractionResult<DiscordChannel>(ThrownException);
|
||||
|
|
@ -707,7 +713,7 @@ public abstract class BaseCommand
|
|||
async Task RefreshMessage()
|
||||
{
|
||||
var dropdown = new DiscordStringSelectComponent(CustomPlaceHolder, options.Skip(CurrentPage * 25).Take(25).Select(x => new DiscordStringSelectComponentOption(x.Label, x.Value, x.Description, (x.Value == Selected), x.Emoji)), SelectionInteractionId);
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).AsAwaitingInput(this.ctx)).AddComponents(dropdown).WithContent(this.ctx.ResponseMessage.Content);
|
||||
|
||||
_ = NextPageButton.SetState(options.Skip(CurrentPage * 25).Count() <= 25);
|
||||
_ = PrevPageButton.SetState(CurrentPage == 0);
|
||||
|
|
@ -784,7 +790,7 @@ public abstract class BaseCommand
|
|||
|
||||
this.ctx.Client.ComponentInteractionCreated -= RunInteraction;
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(this.ctx.ResponseMessage.Embeds[0]).WithContent(this.ctx.ResponseMessage.Content));
|
||||
|
||||
if (ExceptionOccurred)
|
||||
return new InteractionResult<string>(ThrownException);
|
||||
|
|
@ -807,7 +813,7 @@ public abstract class BaseCommand
|
|||
|
||||
var ReOpen = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(this.t.Commands.Common.Prompts.ReOpenModal), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🔄")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(customEmbed ?? new DiscordEmbedBuilder
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(customEmbed ?? new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Common.Prompts.WaitingForModalResponse, true)
|
||||
}.AsAwaitingInput(this.ctx)).AddComponents(new List<DiscordComponent> { ReOpen, MessageComponents.GetCancelButton(this.ctx.DbUser, this.ctx.Bot) }));
|
||||
|
|
@ -872,7 +878,7 @@ public abstract class BaseCommand
|
|||
this.ctx.Client.ComponentInteractionCreated -= RunInteraction;
|
||||
|
||||
if (ResetToOriginalEmbed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(oriEmbed));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(oriEmbed));
|
||||
|
||||
if (ExceptionOccurred)
|
||||
return new InteractionResult<ComponentInteractionCreateEventArgs>(ThrownException);
|
||||
|
|
@ -1445,7 +1451,7 @@ public abstract class BaseCommand
|
|||
{
|
||||
if (this.ctx.DbUser.PendingUserUpload.TimeOut.GetTotalSecondsUntil() > 0 && !this.ctx.DbUser.PendingUserUpload.InteractionHandled)
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = $"`An upload interaction is already taking place. Please finish it beforehand.`",
|
||||
}.AsError(this.ctx)));
|
||||
|
|
@ -1479,7 +1485,7 @@ public abstract class BaseCommand
|
|||
#region FinishInteraction
|
||||
public void ModifyToTimedOut(bool Delete = false)
|
||||
{
|
||||
_ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).WithFooter(this.ctx.ResponseMessage.Embeds[0]?.Footer?.Text + $" • {this.GetString(this.t.Commands.Common.InteractionTimeout)}").WithColor(DiscordColor.Gray)));
|
||||
_ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder(this.ctx.ResponseMessage.Embeds[0]).WithFooter(this.ctx.ResponseMessage.Embeds[0]?.Footer?.Text + $" • {this.GetString(this.t.Commands.Common.InteractionTimeout)}").WithColor(DiscordColor.Gray)));
|
||||
|
||||
if (Delete)
|
||||
_ = Task.Delay(5000).ContinueWith(_ =>
|
||||
|
|
@ -1635,19 +1641,19 @@ public abstract class BaseCommand
|
|||
}.AsError(this.ctx));
|
||||
|
||||
public void SendVoiceStateError()
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Common.Errors.VoiceChannel).Build(true),
|
||||
}.AsError(this.ctx)));
|
||||
|
||||
public void SendUserBanError(BanDetails entry)
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.t.Commands.Common.Errors.UserBan.t["en"].Build(true, new TVar("Reason", entry.Reason)),
|
||||
}.AsError(this.ctx)));
|
||||
|
||||
public void SendGuildBanError(BanDetails entry)
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Common.Errors.GuildBan, true, new TVar("Reason", entry.Reason)),
|
||||
}.AsError(this.ctx)));
|
||||
|
|
@ -1667,20 +1673,20 @@ public abstract class BaseCommand
|
|||
};
|
||||
|
||||
public void SendDataError()
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Common.Errors.Data, true, new TVar("Command", $"{this.ctx.Prefix}data delete")),
|
||||
}.AsError(this.ctx)));
|
||||
|
||||
public void SendDmError()
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = $"📩 {this.GetString(this.t.Commands.Common.Errors.DirectMessage, true)}",
|
||||
ImageUrl = (this.ctx.User.Presence.ClientStatus.Mobile.HasValue ? "https://cdn.discordapp.com/attachments/1005430437952356423/1144961395515998238/34rhz83ghtzu3ght.gif" : "https://cdn.discordapp.com/attachments/1005430437952356423/1144964670197862400/et2grtzu2ghrzi52.gif")
|
||||
}.AsError(this.ctx)));
|
||||
|
||||
public void SendDmRedirect()
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
=> _ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = $"📩 {this.GetString(this.t.Commands.Common.DirectMessageRedirect, true)}",
|
||||
}.AsSuccess(this.ctx)));
|
||||
|
|
@ -1708,7 +1714,7 @@ public abstract class BaseCommand
|
|||
Description = $"**`{ctx.Prefix}{ctx.Command.Name}{(ctx.RawArgumentString != "" ? $" {ctx.RawArgumentString.SanitizeForCode().Replace("\\", "")}" : "")}` is not a valid way of using this command.**\nUse it like this instead: `{ctx.Prefix}{ctx.Command.GenerateUsage()}`\n\nArguments wrapped in `[]` are optional while arguments wrapped in `<>` are required.\n**Do not include the brackets when using commands, they're merely an indicator for requirement.**",
|
||||
}.AsError(this.ctx);
|
||||
|
||||
_ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).WithContent(this.ctx.User.Mention));
|
||||
_ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).WithContent(this.ctx.User.Mention));
|
||||
}
|
||||
#endregion
|
||||
}
|
||||
|
|
|
|||
|
|
@ -60,7 +60,7 @@ internal sealed class ActionLogCommand : BaseCommand
|
|||
var ChangeChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), $"{(ctx.DbGuild.ActionLog.Channel == 0 ? this.GetString(CommandKey.SetChannelButton) : this.GetString(CommandKey.ChangeChannelButton))}", false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
|
||||
var ChangeFilter = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeFilterButton), (ctx.DbGuild.ActionLog.Channel == 0), new DiscordComponentEmoji(DiscordEmoji.FromUnicode("📣")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
{ Disable }
|
||||
|
|
@ -153,7 +153,7 @@ internal sealed class ActionLogCommand : BaseCommand
|
|||
new(this.GetString(CommandKey.InviteModifications), "log_invites_modified", null, ctx.DbGuild.ActionLog.InvitesModified, new DiscordComponentEmoji(EmojiTemplates.GetInvite(ctx.Bot))),
|
||||
};
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(new DiscordStringSelectComponent(this.GetString(CommandKey.NoOptions), Selections, Guid.NewGuid().ToString(), 0, Selections.Count, false)));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(new DiscordStringSelectComponent(this.GetString(CommandKey.NoOptions), Selections, Guid.NewGuid().ToString(), 0, Selections.Count, false)));
|
||||
|
||||
var e = await ctx.Client.GetInteractivity().WaitForSelectAsync(ctx.ResponseMessage, x => x.User.Id == ctx.User.Id, ComponentType.StringSelect, TimeSpan.FromMinutes(2));
|
||||
|
||||
|
|
|
|||
|
|
@ -47,7 +47,7 @@ internal sealed class AutoCrosspostCommand : BaseCommand
|
|||
var AddButton = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.AddChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("➕")));
|
||||
var RemoveButton = new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(CommandKey.RemoveChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("✖")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
ExcludeBots,
|
||||
|
|
@ -96,7 +96,7 @@ internal sealed class AutoCrosspostCommand : BaseCommand
|
|||
{
|
||||
if (ModalResult.Exception.GetType() == typeof(InvalidOperationException))
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(CommandKey.DurationLimit, true)).AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(CommandKey.DurationLimit, true)).AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
@ -123,7 +123,7 @@ internal sealed class AutoCrosspostCommand : BaseCommand
|
|||
{
|
||||
embed.Description = this.GetString(CommandKey.ChannelLimit, true, new TVar("Invite", ctx.Bot.status.DevelopmentServerInvite));
|
||||
embed = embed.AsError(ctx, this.GetString(CommandKey.Title));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
@ -156,7 +156,7 @@ internal sealed class AutoCrosspostCommand : BaseCommand
|
|||
|
||||
if (ChannelResult.Result.Type != ChannelType.News)
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(this.t.Commands.Common.Errors.NoChannels, true)).AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(this.t.Commands.Common.Errors.NoChannels, true)).AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -41,7 +41,7 @@ internal sealed class AutoUnarchiveCommand : BaseCommand
|
|||
var Add = new DiscordButtonComponent(ButtonStyle.Success, Guid.NewGuid().ToString(), this.GetString(CommandKey.AddChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("➕")));
|
||||
var Remove = new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(CommandKey.RemoveChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("✖")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
Add,
|
||||
|
|
|
|||
|
|
@ -42,7 +42,7 @@ internal sealed class BumpReminderCommand : BaseCommand
|
|||
var ChangeChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeChannelButton), ctx.DbGuild.BumpReminder.ChannelId == 0, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
|
||||
var ChangeRole = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeRoleButton), ctx.DbGuild.BumpReminder.ChannelId == 0, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithDescription(GetCurrentConfiguration(ctx)).AsAwaitingInput(ctx, this.GetString(CommandKey.Title)))
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ internal sealed class EmbedMessageCommand : BaseCommand
|
|||
var ToggleMsg = new DiscordButtonComponent((ctx.DbGuild.EmbedMessage.UseEmbedding ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleMessageLinkButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
|
||||
var ToggleGithub = new DiscordButtonComponent((ctx.DbGuild.EmbedMessage.UseGithubEmbedding ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleGithubCodeButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🤖")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
ToggleMsg,
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ internal sealed class ExperienceCommand : BaseCommand
|
|||
Description = GetCurrentConfiguration(ctx)
|
||||
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed);
|
||||
|
||||
var ToggleExperienceSystem = new DiscordButtonComponent((ctx.DbGuild.Experience.UseExperience ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleExperienceButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("✨")));
|
||||
var ToggleBumperBoost = new DiscordButtonComponent((ctx.DbGuild.Experience.BoostXpForBumpReminder ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleExperienceBoostButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("⏫")));
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ internal sealed class InVoicePrivacyCommand : BaseCommand
|
|||
var ToggleDeletion = new DiscordButtonComponent((ctx.DbGuild.InVoiceTextPrivacy.ClearTextEnabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleMessageDeletionButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🗑")));
|
||||
var TogglePermission = new DiscordButtonComponent((ctx.DbGuild.InVoiceTextPrivacy.SetPermissionsEnabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.TogglePermissionProtectionButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("📋")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
ToggleDeletion,
|
||||
|
|
|
|||
|
|
@ -39,7 +39,7 @@ internal sealed class InviteNotesCommand : BaseCommand
|
|||
|
||||
if (!(ctx.DbGuild.InviteNotes.Notes.Length > 19))
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
AddButton,
|
||||
|
|
@ -48,7 +48,7 @@ internal sealed class InviteNotesCommand : BaseCommand
|
|||
}
|
||||
else
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent> { RemoveButton }).AddComponents(MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot)));
|
||||
}
|
||||
|
||||
|
|
@ -81,7 +81,7 @@ internal sealed class InviteNotesCommand : BaseCommand
|
|||
$"`{this.GetString(CommandKey.Invite).PadRight(pad)}`: `{(SelectedInvite is null ? this.GetString(this.t.Common.NotSelected) : $"{SelectedInvite.Code}")}`"
|
||||
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent> { SelectTextButton, SelectInviteButton, Finish })
|
||||
.AddComponents(MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot)));
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ internal sealed class InviteTrackerCommand : BaseCommand
|
|||
|
||||
var Toggle = new DiscordButtonComponent((ctx.DbGuild.InviteTracker.Enabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleInviteTrackerButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("📲")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
Toggle
|
||||
|
|
|
|||
|
|
@ -26,6 +26,8 @@ internal sealed class JoinCommand : BaseCommand
|
|||
var pad = TranslationUtil.CalculatePadding(ctx.DbUser,
|
||||
CommandKey.Autoban,
|
||||
CommandKey.JoinLogChannel,
|
||||
CommandKey.UserCountChannel,
|
||||
CommandKey.UserCountChannelFormat,
|
||||
CommandKey.Role,
|
||||
CommandKey.ReApplyRoles,
|
||||
CommandKey.ReApplyNickname,
|
||||
|
|
@ -35,6 +37,7 @@ internal sealed class JoinCommand : BaseCommand
|
|||
|
||||
return $"{"🌐".UnicodeToEmoji()} `{CommandKey.Autoban.Get(ctx.DbUser).PadRight(pad)}`: {ctx.DbGuild.Join.AutoBanGlobalBans.ToEmote(ctx.Bot)}\n" +
|
||||
$"{"👋".UnicodeToEmoji()} `{CommandKey.JoinLogChannel.Get(ctx.DbUser).PadRight(pad)}`: {(ctx.DbGuild.Join.JoinlogChannelId != 0 ? $"<#{ctx.DbGuild.Join.JoinlogChannelId}>" : false.ToEmote(ctx.Bot))}\n" +
|
||||
$"{"🔢".UnicodeToEmoji()} `{CommandKey.UserCountChannel.Get(ctx.DbUser).PadRight(pad)}`: {(ctx.DbGuild.Join.UserCountChannelId != 0 ? $"<#{ctx.DbGuild.Join.UserCountChannelId}> (`{(ctx.DbGuild.Join.UserCountChannelFormat is not null ? ctx.DbGuild.Join.UserCountChannelFormat : "Users: %s")}`)" : false.ToEmote(ctx.Bot))}\n" +
|
||||
$"{"👤".UnicodeToEmoji()} `{CommandKey.Role.Get(ctx.DbUser).PadRight(pad)}`: {(ctx.DbGuild.Join.AutoAssignRoleId != 0 ? $"<@&{ctx.DbGuild.Join.AutoAssignRoleId}>" : false.ToEmote(ctx.Bot))}\n" +
|
||||
$"{"👥".UnicodeToEmoji()} `{CommandKey.ReApplyRoles.Get(ctx.DbUser).PadRight(pad)}`: {ctx.DbGuild.Join.ReApplyRoles.ToEmote(ctx.Bot)}\n" +
|
||||
$"{"💬".UnicodeToEmoji()} `{CommandKey.ReApplyNickname.Get(ctx.DbUser).PadRight(pad)}`: {ctx.DbGuild.Join.ReApplyNickname.ToEmote(ctx.Bot)}\n\n" +
|
||||
|
|
@ -53,10 +56,12 @@ internal sealed class JoinCommand : BaseCommand
|
|||
Description = GetCurrentConfiguration(ctx)
|
||||
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed);
|
||||
|
||||
var ToggleGlobalban = new DiscordButtonComponent((ctx.DbGuild.Join.AutoBanGlobalBans ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleGlobalBansButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🌐")));
|
||||
var ChangeJoinlogChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeJoinlogChannelButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👋")));
|
||||
var ChangeUserCountChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeUserCountChannel), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🔢")));
|
||||
var ChangeUserCountFormat = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeUserCountChannelFormat), ctx.DbGuild.Join.UserCountChannelId == 0, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🔢")));
|
||||
var ChangeRoleOnJoin = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeRoleButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
|
||||
var ToggleReApplyRoles = new DiscordButtonComponent((ctx.DbGuild.Join.ReApplyRoles ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleReApplyRole), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👥")));
|
||||
var ToggleReApplyName = new DiscordButtonComponent((ctx.DbGuild.Join.ReApplyNickname ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleReApplyNickname), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
|
||||
|
|
@ -76,6 +81,8 @@ internal sealed class JoinCommand : BaseCommand
|
|||
{
|
||||
ChangeJoinlogChannel,
|
||||
ChangeRoleOnJoin,
|
||||
ChangeUserCountChannel,
|
||||
ChangeUserCountFormat,
|
||||
})
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
|
|
@ -93,6 +100,7 @@ internal sealed class JoinCommand : BaseCommand
|
|||
return;
|
||||
}
|
||||
|
||||
if (e.GetCustomId() != ChangeUserCountFormat.CustomId)
|
||||
_ = e.Result.Interaction.CreateResponseAsync(InteractionResponseType.DeferredMessageUpdate);
|
||||
|
||||
if (e.GetCustomId() == ToggleGlobalban.CustomId)
|
||||
|
|
@ -156,6 +164,87 @@ internal sealed class JoinCommand : BaseCommand
|
|||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
}
|
||||
else if (e.GetCustomId() == ChangeUserCountChannel.CustomId)
|
||||
{
|
||||
var ChannelResult = await this.PromptChannelSelection(ChannelType.Text, new ChannelPromptConfiguration
|
||||
{
|
||||
CreateChannelOption = new()
|
||||
{
|
||||
Name = "tmp-usercount",
|
||||
ChannelType = ChannelType.Text
|
||||
},
|
||||
DisableOption = this.GetString(CommandKey.DisableUserCountChannel)
|
||||
});
|
||||
|
||||
if (ChannelResult.TimedOut)
|
||||
{
|
||||
this.ModifyToTimedOut(true);
|
||||
return;
|
||||
}
|
||||
else if (ChannelResult.Cancelled)
|
||||
{
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
}
|
||||
else if (ChannelResult.Failed)
|
||||
{
|
||||
if (ChannelResult.Exception.GetType() == typeof(NullReferenceException))
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordEmbedBuilder().AsError(ctx).WithDescription(this.GetString(this.t.Commands.Common.Errors.NoChannels)));
|
||||
await Task.Delay(3000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
}
|
||||
|
||||
throw ChannelResult.Exception;
|
||||
}
|
||||
|
||||
ctx.DbGuild.Join.UserCountChannelId = ChannelResult.Result is null ? 0 : ChannelResult.Result.Id;
|
||||
|
||||
if (ChannelResult.Result is not null)
|
||||
await JoinEvents.RunUserCountUpdater(ctx.Bot, ctx.Guild);
|
||||
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
}
|
||||
else if (e.GetCustomId() == ChangeUserCountFormat.CustomId)
|
||||
{
|
||||
var modelResult = await this.PromptModalWithRetry(e.Result.Interaction,
|
||||
new DiscordInteractionModalBuilder(this.GetString(CommandKey.ChangeUserCountChannelFormat))
|
||||
.AddTextComponent(new DiscordTextComponent(TextComponentStyle.Small, "new_format", this.GetString(CommandKey.ChangeUserCountChannelFormatModal), null, 2, 16)),
|
||||
false);
|
||||
|
||||
if (modelResult.TimedOut)
|
||||
{
|
||||
this.ModifyToTimedOut(true);
|
||||
return;
|
||||
}
|
||||
else if (modelResult.Cancelled)
|
||||
{
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
}
|
||||
else if (modelResult.Failed)
|
||||
{
|
||||
if (modelResult.Exception.GetType() == typeof(NullReferenceException))
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordEmbedBuilder().AsError(ctx).WithDescription(this.GetString(this.t.Commands.Common.Errors.NoChannels)));
|
||||
await Task.Delay(3000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
}
|
||||
|
||||
throw modelResult.Exception;
|
||||
}
|
||||
|
||||
ctx.DbGuild.Join.UserCountChannelFormat = modelResult.Result.Interaction.GetModalValueByCustomId("new_format");
|
||||
|
||||
if (ctx.DbGuild.Join.UserCountChannelId != 0)
|
||||
await JoinEvents.RunUserCountUpdater(ctx.Bot, ctx.Guild);
|
||||
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
}
|
||||
else if (e.GetCustomId() == ChangeRoleOnJoin.CustomId)
|
||||
{
|
||||
var RoleResult = await this.PromptRoleSelection(new RolePromptConfiguration { CreateRoleOption = this.GetString(CommandKey.AutoAssignRoleName), DisableOption = this.GetString(CommandKey.DisableRoleOnJoin) });
|
||||
|
|
|
|||
|
|
@ -112,7 +112,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
|
|||
|
||||
var Dropdown = new DiscordStringSelectComponent(this.GetString(CommandKey.SelectDropdown), DefinedRewards.Skip(CurrentPage * 20).Take(20).ToList(), "RewardSelection");
|
||||
embed = embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed);
|
||||
|
||||
if (DefinedRewards.Count > 0)
|
||||
_ = builder.AddComponents(Dropdown);
|
||||
|
|
@ -196,7 +196,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
|
|||
$"`{this.GetString(CommandKey.Message).PadRight(pad)}`: `{selectedCustomText}`"
|
||||
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed)
|
||||
.AddComponents(new List<DiscordComponent> { SelectRole, SelectLevel, SelectCustomText, Finish })
|
||||
.AddComponents(MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot)));
|
||||
|
||||
|
|
@ -316,7 +316,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
|
|||
if (newMessage.Length > 256)
|
||||
{
|
||||
action_embed.Description = this.GetString(CommandKey.MessageTooLong, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(3000);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -342,7 +342,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
|
|||
});
|
||||
|
||||
action_embed.Description = this.GetString(CommandKey.AddedNewReward, true, new TVar("Role", $"<@&{selectedRole.Id}>"), new TVar("Level", selectedLevel));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
|
||||
await Task.Delay(5000);
|
||||
await RefreshMessage();
|
||||
|
|
@ -391,7 +391,7 @@ internal sealed class LevelRewardsCommand : BaseCommand
|
|||
|
||||
if (result.Length > 256)
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(CommandKey.MessageTooLong, true)).AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(CommandKey.MessageTooLong, true)).AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -35,7 +35,7 @@ internal sealed class NameNormalizerCommand : BaseCommand
|
|||
var Toggle = new DiscordButtonComponent((ctx.DbGuild.NameNormalizer.NameNormalizerEnabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleNameNormalizer), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
|
||||
var SearchAllNames = new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(CommandKey.NormalizeNow), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🔨")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
Toggle,
|
||||
|
|
@ -64,7 +64,7 @@ internal sealed class NameNormalizerCommand : BaseCommand
|
|||
{
|
||||
if (ctx.DbGuild.NameNormalizer.NameNormalizerRunning)
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))
|
||||
.WithDescription(this.GetString(CommandKey.NormalizerRunning, true))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
|
|
@ -78,7 +78,7 @@ internal sealed class NameNormalizerCommand : BaseCommand
|
|||
|
||||
try
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsLoading(ctx, this.GetString(CommandKey.Title))
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsLoading(ctx, this.GetString(CommandKey.Title))
|
||||
.WithDescription(this.GetString(CommandKey.RenamingAllMembers, true))));
|
||||
|
||||
var members = await ctx.Guild.GetAllMembersAsync();
|
||||
|
|
@ -101,7 +101,7 @@ internal sealed class NameNormalizerCommand : BaseCommand
|
|||
}
|
||||
}
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))
|
||||
.WithDescription(this.GetString(CommandKey.RenamedMembers, true, new TVar("Count", Renamed)))));
|
||||
await Task.Delay(5000);
|
||||
ctx.DbGuild.NameNormalizer.NameNormalizerRunning = false;
|
||||
|
|
|
|||
|
|
@ -73,7 +73,7 @@ internal sealed class PhishingCommand : BaseCommand
|
|||
var ChangeReasonButton = new DiscordButtonComponent(ButtonStyle.Secondary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangePunishmentReason), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
|
||||
var ChangeTimeoutLengthButton = new DiscordButtonComponent(ButtonStyle.Secondary, Guid.NewGuid().ToString(), this.GetString(CommandKey.ChangeTimeoutLength), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🕒")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
{ ToggleDetectionButton },
|
||||
|
|
@ -188,7 +188,7 @@ internal sealed class PhishingCommand : BaseCommand
|
|||
{
|
||||
if (ctx.DbGuild.PhishingDetection.PunishmentType != PhishingPunishmentType.Timeout)
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(CommandKey.NotUsingType, true, new TVar("Type", this.GetString(CommandKey.PunishmentTypeTimeout))))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(CommandKey.NotUsingType, true, new TVar("Type", this.GetString(CommandKey.PunishmentTypeTimeout))))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
@ -211,7 +211,7 @@ internal sealed class PhishingCommand : BaseCommand
|
|||
{
|
||||
if (ModalResult.Exception.GetType() == typeof(InvalidOperationException))
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.WithDescription(this.GetString(CommandKey.InvalidDuration, true)).AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.WithDescription(this.GetString(CommandKey.InvalidDuration, true)).AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -36,7 +36,7 @@ internal sealed class PrefixCommand : BaseCommand
|
|||
var TogglePrefixCommands = new DiscordButtonComponent((ctx.DbGuild.PrefixSettings.PrefixDisabled ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(this.t.Commands.Config.PrefixConfigCommand.TogglePrefixCommands), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("⌨")));
|
||||
var ChangePrefix = new DiscordButtonComponent(ButtonStyle.Secondary, Guid.NewGuid().ToString(), this.GetString(this.t.Commands.Config.PrefixConfigCommand.ChangePrefix), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🗝")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
{ TogglePrefixCommands },
|
||||
|
|
|
|||
|
|
@ -78,7 +78,7 @@ internal sealed class AddCommand : BaseCommand
|
|||
case Enums.CommandType.ContextMenu:
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.SelectRolePrompt, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
|
||||
var RoleResult = await this.PromptRoleSelection();
|
||||
|
||||
if (RoleResult.TimedOut)
|
||||
|
|
@ -122,7 +122,7 @@ internal sealed class AddCommand : BaseCommand
|
|||
case Enums.CommandType.ContextMenu:
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.ReactWithEmoji, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
|
||||
|
||||
var emoji_wait = await ctx.Client.GetInteractivity().WaitForReactionAsync(x => x.Channel.Id == ctx.Channel.Id && x.User.Id == ctx.User.Id && x.Message.Id == message.Id, TimeSpan.FromMinutes(2));
|
||||
|
||||
|
|
@ -141,7 +141,7 @@ internal sealed class AddCommand : BaseCommand
|
|||
if (emoji_parameter.Id != 0 && !ctx.Guild.Emojis.ContainsKey(emoji_parameter.Id))
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.NoAccessToEmoji);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -157,28 +157,28 @@ internal sealed class AddCommand : BaseCommand
|
|||
if (ctx.DbGuild.ReactionRoles.Length > 100)
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.ReactionRoleLimitReached, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
return;
|
||||
}
|
||||
|
||||
if (emoji_parameter.Id != 0 && !ctx.Guild.Emojis.ContainsKey(emoji_parameter.Id))
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.NoAccessToEmoji, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
return;
|
||||
}
|
||||
|
||||
if (ctx.DbGuild.ReactionRoles.Any(x => (x.MessageId == message.Id && x.EmojiName == emoji_parameter.GetUniqueDiscordName())))
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.EmojiAlreadyUsed, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
return;
|
||||
}
|
||||
|
||||
if (ctx.DbGuild.ReactionRoles.Any(x => x.RoleId == role_parameter.Id))
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.RoleAlreadyUsed, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -198,7 +198,7 @@ internal sealed class AddCommand : BaseCommand
|
|||
new TVar("User", message.Author.Mention),
|
||||
new TVar("Channel", message.Channel.Mention),
|
||||
new TVar("Emoji", emoji_parameter));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -37,7 +37,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
Description = this.GetString(CommandKey.ReactionRoleCount, true, new TVar("Count", ctx.DbGuild.ReactionRoles.Length))
|
||||
}.AsAwaitingInput(ctx, this.GetString(CommandKey.Title));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
AddButton, RemoveButton
|
||||
|
|
@ -80,13 +80,13 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
if (ctx.DbGuild.ReactionRoles.Length > 100)
|
||||
{
|
||||
action_embed.Description = this.GetString(CommandKey.ReactionRoleLimitReached, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
}
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed)
|
||||
.AddComponents(new List<DiscordComponent> { SelectMessage, SelectEmoji, SelectRole, Finish })
|
||||
.AddComponents(MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot)));
|
||||
|
||||
|
|
@ -132,7 +132,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
$"`https://ptb.discord.com/channels/012345678901234567/012345678901234567/012345678912345678`\n" +
|
||||
$"`https://canary.discord.com/channels/012345678901234567/012345678901234567/012345678912345678`";
|
||||
action_embed.ImageUrl = "";
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(3000);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -141,7 +141,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
{
|
||||
action_embed.Description = this.GetString(CommandKey.MessageUrlWrongGuild, true);
|
||||
action_embed.ImageUrl = "";
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(3000);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -150,7 +150,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
{
|
||||
action_embed.Description = this.GetString(CommandKey.MessageUrlNoChannel, true);
|
||||
action_embed.ImageUrl = "";
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(3000);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -161,7 +161,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
{
|
||||
action_embed.Description = this.GetString(CommandKey.MessageUrlNoMessage, true);
|
||||
action_embed.ImageUrl = "";
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(3000);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -175,7 +175,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
|
||||
action_embed.Description = this.GetString(CommandKey.ReactWithEmoji, true);
|
||||
action_embed.ImageUrl = "";
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
|
||||
|
||||
var emoji_wait = await ctx.Client.GetInteractivity().WaitForReactionAsync(x => x.Channel.Id == ctx.Channel.Id && x.User.Id == ctx.User.Id && x.Message.Id == selectedMessage.Id, TimeSpan.FromMinutes(2));
|
||||
|
||||
|
|
@ -194,7 +194,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
if (emoji.Id != 0 && !ctx.Guild.Emojis.ContainsKey(emoji.Id))
|
||||
{
|
||||
action_embed.Description = this.GetString(CommandKey.NoAccessToEmoji, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(3000);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -202,7 +202,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
if (ctx.DbGuild.ReactionRoles.Any(x => (x.MessageId == selectedMessage.Id && x.EmojiName == emoji.GetUniqueDiscordName())))
|
||||
{
|
||||
action_embed.Description = this.GetString(CommandKey.EmojiAlreadyUsed, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(3000);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -242,7 +242,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
if (ctx.DbGuild.ReactionRoles.Any(x => x.RoleId == RoleResult.Result.Id))
|
||||
{
|
||||
action_embed.Description = this.GetString(CommandKey.RoleAlreadyUsed, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(3000);
|
||||
continue;
|
||||
}
|
||||
|
|
@ -257,7 +257,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
if (ctx.DbGuild.ReactionRoles.Length > 100)
|
||||
{
|
||||
action_embed.Description = this.GetString(CommandKey.ReactionRoleLimitReached, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
@ -266,7 +266,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
if (ctx.DbGuild.ReactionRoles.Any(x => x.RoleId == selectedRole.Id))
|
||||
{
|
||||
action_embed.Description = this.GetString(CommandKey.RoleAlreadyUsed, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
@ -275,7 +275,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
if (selectedEmoji.Id != 0 && !ctx.Guild.Emojis.ContainsKey(selectedEmoji.Id))
|
||||
{
|
||||
action_embed.Description = this.GetString(CommandKey.NoAccessToEmoji, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
@ -284,7 +284,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
if (ctx.DbGuild.ReactionRoles.Any(x => (x.MessageId == selectedMessage.Id && x.EmojiName == selectedEmoji.GetUniqueDiscordName())))
|
||||
{
|
||||
action_embed.Description = this.GetString(CommandKey.EmojiAlreadyUsed, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
@ -306,7 +306,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
new TVar("User", selectedMessage.Author.Mention),
|
||||
new TVar("Channel", selectedMessage.Channel.Mention),
|
||||
new TVar("Emoji", selectedEmoji));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
@ -357,7 +357,7 @@ internal sealed class ConfigCommand : BaseCommand
|
|||
new TVar("User", reactionMessage?.Author.Mention ?? "`/`"),
|
||||
new TVar("Channel", reactionMessage?.Channel.Mention ?? "`/`"),
|
||||
new TVar("Emoji", obj.GetEmoji(ctx.Client)));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
await Task.Delay(5000);
|
||||
await this.ExecuteCommand(ctx, arguments);
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -68,7 +68,7 @@ internal sealed class RemoveAllCommand : BaseCommand
|
|||
if (!ctx.DbGuild.ReactionRoles.Any(x => x.MessageId == message.Id))
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.NoReactionRoles, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -80,7 +80,7 @@ internal sealed class RemoveAllCommand : BaseCommand
|
|||
embed.Description = this.GetString(CommandKey.RemovedAllReactionRoles, true,
|
||||
new TVar("User", message?.Author.Mention ?? "`/`"),
|
||||
new TVar("Channel", message?.Channel.Mention ?? "`/`"));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -77,7 +77,7 @@ internal sealed class RemoveCommand : BaseCommand
|
|||
case Enums.CommandType.ContextMenu:
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.ReactWithEmojiToRemove, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsAwaitingInput(ctx, this.GetString(CommandKey.Title))));
|
||||
|
||||
var emoji_wait = await ctx.Client.GetInteractivity().WaitForReactionAsync(x => x.Channel.Id == ctx.Channel.Id && x.User.Id == ctx.User.Id && x.Message.Id == message.Id, TimeSpan.FromMinutes(2));
|
||||
|
||||
|
|
@ -98,7 +98,7 @@ internal sealed class RemoveCommand : BaseCommand
|
|||
if (!ctx.DbGuild.ReactionRoles.Any(x => x.MessageId == message.Id && x.EmojiName == emoji_parameter.GetUniqueDiscordName()))
|
||||
{
|
||||
embed.Description = this.GetString(CommandKey.NoReactionRoleFound);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsError(ctx, this.GetString(CommandKey.Title))));
|
||||
return;
|
||||
}
|
||||
|
||||
|
|
@ -116,7 +116,7 @@ internal sealed class RemoveCommand : BaseCommand
|
|||
new TVar("User", reactionMessage?.Author.Mention ?? "`/`"),
|
||||
new TVar("Channel", reactionMessage?.Channel.Mention ?? "`/`"),
|
||||
new TVar("Emoji", obj.GetEmoji(ctx.Client)));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsSuccess(ctx, this.GetString(CommandKey.Title))));
|
||||
});
|
||||
}
|
||||
}
|
||||
|
|
@ -34,7 +34,7 @@ internal sealed class TokenDetectionCommand : BaseCommand
|
|||
|
||||
var Toggle = new DiscordButtonComponent((ctx.DbGuild.TokenLeakDetection.DetectTokens ? ButtonStyle.Danger : ButtonStyle.Success), Guid.NewGuid().ToString(), this.GetString(CommandKey.ToggleTokenDetection), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("⚠")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
Toggle
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ internal sealed class VcCreatorCommand : BaseCommand
|
|||
|
||||
var SetChannel = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetVcCreator), false, EmojiTemplates.GetChannel(ctx.Bot).ToComponent());
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed)
|
||||
.AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
SetChannel
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Project Makoto
|
||||
// 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
|
||||
|
|
@ -180,7 +180,7 @@ public sealed partial class DebugCommands : ApplicationCommandsModule
|
|||
}
|
||||
}
|
||||
|
||||
[SlashCommand("developertools", "Developer Tools used to manage Makoto.", dmPermission: false, defaultMemberPermissions: (long)Permissions.None)]
|
||||
[SlashCommand("developertools", "Developer Tools used to manage Makoto.", defaultMemberPermissions: (long)Permissions.None, allowedContexts: [InteractionContextType.Guild])]
|
||||
[System.Diagnostics.CodeAnalysis.SuppressMessage("Style", "IDE0075:Simplify conditional expression", Justification = "<Pending>")]
|
||||
public async Task DevTools(InteractionContext ctx,
|
||||
[Autocomplete(typeof(MaintainerAutoComplete))][Option("command", "The command to run.", true)] string command,
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ internal sealed class EvaluationCommand : BaseCommand
|
|||
{
|
||||
if (ctx.CommandType is not Enums.CommandType.ApplicationCommand and not Enums.CommandType.ContextMenu)
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder().WithDescription("Evaluating CScript has the potential of leaking confidential information. Are you sure you want to run this command as Prefix Command?").AsWarning(ctx))
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder().WithDescription("Evaluating CScript has the potential of leaking confidential information. Are you sure you want to run this command as Prefix Command?").AsWarning(ctx))
|
||||
.AddComponents(new List<DiscordComponent> { new DiscordButtonComponent(ButtonStyle.Success, "yes", "Yes"),
|
||||
new DiscordButtonComponent(ButtonStyle.Danger, "no", "No")}));
|
||||
|
||||
|
|
|
|||
|
|
@ -44,7 +44,7 @@ internal sealed class GlobalNotesCommand : BaseCommand
|
|||
var RemoveButton = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), "Remove Notes", (!ctx.Bot.globalNotes.ContainsKey(victim.Id)), DiscordEmoji.FromUnicode("➖").ToComponent());
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder()
|
||||
.WithEmbed(new DiscordEmbedBuilder()
|
||||
.AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithDescription($"{victim.Mention} `has {(ctx.Bot.globalNotes.TryGetValue(victim.Id, out var noteObj) ? noteObj.Notes.Length : 0)} global notes.`")
|
||||
.AddFields((noteObj is not null ? noteObj.Notes.Take(20).Select(x => new DiscordEmbedField(" ", $"{x.Reason.FullSanitize()} - `{(ModeratorCache[x.Moderator] is null ? "Unknown#0000" : ModeratorCache[x.Moderator].GetUsernameWithIdentifier())}` {x.Timestamp.ToTimestamp()}")) : new List<DiscordEmbedField>())))
|
||||
.AddComponents(new List<DiscordComponent> { AddButton, RemoveButton })
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Project Makoto
|
||||
// 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
|
||||
|
|
@ -44,7 +44,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
|
|||
|
||||
try
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(GeneratedEmbed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(GeneratedEmbed)
|
||||
.AddComponents(new List<DiscordComponent> { SetTitle, SetAuthor, SetThumbnail })
|
||||
.AddComponents(new List<DiscordComponent> { SetDescription, SetImage, SetColor })
|
||||
.AddComponents(new List<DiscordComponent> { SetFooter, SetTimestamp })
|
||||
|
|
@ -119,7 +119,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
|
|||
var SetByUser = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetAsUserButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
|
||||
var SetByGuild = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetAsServer), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🖥")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(GeneratedEmbed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(GeneratedEmbed)
|
||||
.AddComponents(new List<DiscordComponent> { SetName, SetUrl, SetIcon })
|
||||
.AddComponents(new List<DiscordComponent> { SetByUser, SetByGuild })
|
||||
.AddComponents(new List<DiscordComponent> { MessageComponents.GetBackButton(ctx.DbUser, ctx.Bot) }));
|
||||
|
|
@ -225,7 +225,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
|
|||
|
||||
var asset = await (await ctx.Client.GetChannelAsync(ctx.Bot.status.LoadedConfig.Channels.OtherAssets)).SendMessageAsync(new DiscordMessageBuilder().WithContent($"{ctx.User.Mention} `{ctx.User.GetUsernameWithIdentifier()} ({ctx.User.Id})`").WithFile($"{Guid.NewGuid()}.png", stream.stream));
|
||||
|
||||
GeneratedEmbed.Author.IconUrl = asset.Attachments[0].Url;
|
||||
GeneratedEmbed.Author.IconUrl = asset.Attachments[0].Url.ToString();
|
||||
continue;
|
||||
}
|
||||
else if (Menu2.GetCustomId() == SetByUser.CustomId)
|
||||
|
|
@ -320,7 +320,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
|
|||
|
||||
var asset = await (await ctx.Client.GetChannelAsync(ctx.Bot.status.LoadedConfig.Channels.OtherAssets)).SendMessageAsync(new DiscordMessageBuilder().WithContent($"{ctx.User.Mention} `{ctx.User.GetUsernameWithIdentifier()} ({ctx.User.Id})`").WithFile($"{Guid.NewGuid()}.png", stream.stream));
|
||||
|
||||
GeneratedEmbed.Thumbnail.Url = asset.Attachments[0].Url;
|
||||
GeneratedEmbed.Thumbnail.Url = asset.Attachments[0].Url.ToString();
|
||||
continue;
|
||||
}
|
||||
else if (Menu1.GetCustomId() == SetDescription.CustomId)
|
||||
|
|
@ -384,7 +384,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
|
|||
|
||||
var asset = await (await ctx.Client.GetChannelAsync(ctx.Bot.status.LoadedConfig.Channels.OtherAssets)).SendMessageAsync(new DiscordMessageBuilder().WithContent($"{ctx.User.Mention} `{ctx.User.GetUsernameWithIdentifier()} ({ctx.User.Id})`").WithFile($"{Guid.NewGuid()}.png", stream.stream));
|
||||
|
||||
GeneratedEmbed.ImageUrl = asset.Attachments[0].Url;
|
||||
GeneratedEmbed.ImageUrl = asset.Attachments[0].Url.ToString();
|
||||
continue;
|
||||
}
|
||||
else if (Menu1.GetCustomId() == SetColor.CustomId)
|
||||
|
|
@ -425,7 +425,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
|
|||
var SetByUser = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetAsUserButton), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
|
||||
var SetByGuild = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(CommandKey.SetAsServer), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🖥")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(GeneratedEmbed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(GeneratedEmbed)
|
||||
.AddComponents(new List<DiscordComponent> { SetText, SetIcon })
|
||||
.AddComponents(new List<DiscordComponent> { SetByUser, SetByGuild })
|
||||
.AddComponents(new List<DiscordComponent> { MessageComponents.GetBackButton(ctx.DbUser, ctx.Bot) }));
|
||||
|
|
@ -499,7 +499,7 @@ internal sealed class CustomEmbedCommand : BaseCommand
|
|||
|
||||
var asset = await (await ctx.Client.GetChannelAsync(ctx.Bot.status.LoadedConfig.Channels.OtherAssets)).SendMessageAsync(new DiscordMessageBuilder().WithContent($"{ctx.User.Mention} `{ctx.User.GetUsernameWithIdentifier()} ({ctx.User.Id})`").WithFile($"{Guid.NewGuid()}.png", stream.stream));
|
||||
|
||||
GeneratedEmbed.Footer.IconUrl = asset.Attachments[0].Url;
|
||||
GeneratedEmbed.Footer.IconUrl = asset.Attachments[0].Url.ToString();
|
||||
continue;
|
||||
}
|
||||
else if (Menu2.GetCustomId() == SetByUser.CustomId)
|
||||
|
|
|
|||
|
|
@ -31,7 +31,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
|
|||
return;
|
||||
}
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder().
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder().
|
||||
WithDescription(this.GetString(CommandKey.Scanning, true, new TVar("Victim", victim.Mention)))
|
||||
.AsLoading(ctx)));
|
||||
|
||||
|
|
@ -49,7 +49,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
|
|||
|
||||
currentProg++;
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder().
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder().
|
||||
WithDescription($"{this.GetString(CommandKey.Scanning, true, new TVar("Victim", victim.Mention))}\n" +
|
||||
$"`{StringTools.GenerateASCIIProgressbar(currentProg, maxProg)} {MathTools.CalculatePercentage(currentProg, maxProg),3}%`")
|
||||
.AsLoading(ctx)));
|
||||
|
|
@ -118,7 +118,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
|
|||
if (message.CreationTimestamp.GetTimespanSince() > TimeSpan.FromDays(14))
|
||||
_ = channel.Value.Remove(message);
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithDescription($"{this.GetString(CommandKey.Deleting, true, new TVar("Victim", victim.Mention), new TVar("Count", allMsg))}\n" +
|
||||
$"`{StringTools.GenerateASCIIProgressbar(currentProg, maxProg)} {MathTools.CalculatePercentage(currentProg, maxProg)}%`")
|
||||
.AsLoading(ctx)));
|
||||
|
|
@ -133,7 +133,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
|
|||
{
|
||||
try
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithDescription($"{this.GetString(CommandKey.Deleting, true, new TVar("Victim", victim.Mention), new TVar("Count", allMsg))}\n" +
|
||||
$"`{StringTools.GenerateASCIIProgressbar(currentProg, maxProg)} {MathTools.CalculatePercentage(currentProg, maxProg)}%`")
|
||||
.AsLoading(ctx)));
|
||||
|
|
@ -149,7 +149,7 @@ internal sealed class GuildPurgeCommand : BaseCommand
|
|||
catch { }
|
||||
}
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithDescription(this.GetString(CommandKey.Ended, true, new TVar("Victim", victim.Mention), new TVar("Min", currentProg), new TVar("Max", maxProg), new TVar("ChannelCount", channelList.Count)))
|
||||
.AsSuccess(ctx)));
|
||||
});
|
||||
|
|
|
|||
|
|
@ -28,7 +28,7 @@ internal sealed class ManualBumpCommand : BaseCommand
|
|||
DiscordButtonComponent YesButton = new(ButtonStyle.Success, Guid.NewGuid().ToString(), this.GetString(this.t.Common.Yes), false, DiscordEmoji.FromUnicode("✅").ToComponent());
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder()
|
||||
.WithEmbed(new DiscordEmbedBuilder().WithDescription(this.GetString(CommandKey.Warning, true)).AsWarning(ctx))
|
||||
.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);
|
||||
|
|
|
|||
|
|
@ -37,7 +37,7 @@ internal sealed class AvatarCommand : BaseCommand
|
|||
var ServerProfilePictureButton = new DiscordButtonComponent(ButtonStyle.Secondary, "ShowServer", this.GetString(this.t.Commands.Utility.Avatar.ShowServerProfile), (string.IsNullOrWhiteSpace(member?.GuildAvatarHash)), new DiscordComponentEmoji(DiscordEmoji.FromUnicode("🖥")));
|
||||
var ProfilePictureButton = new DiscordButtonComponent(ButtonStyle.Secondary, "ShowProfile", this.GetString(this.t.Commands.Utility.Avatar.ShowUserProfile), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("👤")));
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed).AddComponents(ServerProfilePictureButton);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed).AddComponents(ServerProfilePictureButton);
|
||||
|
||||
var msg = await this.RespondOrEdit(builder);
|
||||
|
||||
|
|
@ -77,12 +77,12 @@ internal sealed class AvatarCommand : BaseCommand
|
|||
if (e.GetCustomId() == ServerProfilePictureButton.CustomId)
|
||||
{
|
||||
embed.ImageUrl = member.GuildAvatarUrl;
|
||||
_ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(ProfilePictureButton));
|
||||
_ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(ProfilePictureButton));
|
||||
}
|
||||
else if (e.GetCustomId() == ProfilePictureButton.CustomId)
|
||||
{
|
||||
embed.ImageUrl = member.AvatarUrl;
|
||||
_ = this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(ServerProfilePictureButton));
|
||||
_ = this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(ServerProfilePictureButton));
|
||||
}
|
||||
}
|
||||
}).Add(ctx.Bot, ctx);
|
||||
|
|
|
|||
|
|
@ -29,7 +29,7 @@ internal sealed class BannerCommand : BaseCommand
|
|||
Description = victim.BannerUrl.IsNullOrWhiteSpace() ? this.GetString(this.t.Commands.Utility.Banner.NoBanner, true) : ""
|
||||
}.AsInfo(ctx, this.GetString(this.t.Commands.Utility.Banner.Banner, false, new TVar("User", victim.GetUsernameWithIdentifier())));
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed);
|
||||
|
||||
_ = await this.RespondOrEdit(builder);
|
||||
});
|
||||
|
|
|
|||
|
|
@ -23,7 +23,7 @@ internal sealed class DeleteCommand : BaseCommand
|
|||
|
||||
if (ctx.Bot.objectedUsers.Contains(ctx.User.Id))
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Utility.Data.Object.ProfileAlreadyDeleted, true)
|
||||
}.AsAwaitingInput(ctx)).AddComponents(new List<DiscordComponent> { Yes, No }));
|
||||
|
|
@ -75,7 +75,7 @@ internal sealed class DeleteCommand : BaseCommand
|
|||
|
||||
if (ctx.DbUser.Data.DeletionRequested)
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Utility.Data.Object.DeletionAlreadyScheduled, true,
|
||||
new TVar("RequestTimestamp", ctx.DbUser.Data.DeletionRequestDate.AddDays(-14).ToTimestamp()),
|
||||
|
|
@ -110,7 +110,7 @@ internal sealed class DeleteCommand : BaseCommand
|
|||
return;
|
||||
}
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Utility.Data.Object.ObjectionDisclaimer, true, true)
|
||||
}.AsAwaitingInput(ctx)).AddComponents(new List<DiscordComponent> { Yes, No }));
|
||||
|
|
@ -127,7 +127,7 @@ internal sealed class DeleteCommand : BaseCommand
|
|||
|
||||
if (Menu.GetCustomId() == Yes.CustomId)
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = $"**{this.GetString(this.t.Commands.Utility.Data.Object.SecondaryConfirm, true)}**"
|
||||
}.AsAwaitingInput(ctx)).AddComponents(new List<DiscordComponent> { No, Yes }));
|
||||
|
|
|
|||
|
|
@ -55,7 +55,7 @@ internal sealed class RequestCommand : BaseCommand
|
|||
{
|
||||
case Enums.CommandType.ApplicationCommand:
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Utility.Data.Request.Confirm, true)
|
||||
}.AsSuccess(ctx)).WithFile("userdata.json", stream));
|
||||
|
|
@ -66,7 +66,7 @@ internal sealed class RequestCommand : BaseCommand
|
|||
{
|
||||
try
|
||||
{
|
||||
_ = await ctx.User.SendMessageAsync(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
_ = await ctx.User.SendMessageAsync(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Utility.Data.Request.Confirm, true)
|
||||
}.AsSuccess(ctx)).WithFile("userdata.json", stream));
|
||||
|
|
|
|||
|
|
@ -198,7 +198,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
|
|||
|
||||
var SendHereButton = new DiscordButtonComponent(ButtonStyle.Secondary, "SendHere", this.GetString(this.t.Commands.Utility.EmojiStealer.CurrentChatZip), !(ctx.Member.Permissions.HasPermission(Permissions.AttachFiles)), new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed);
|
||||
|
||||
if (SanitizedEmoteList.Any(x => x.Value.EntryType == EmojiType.STICKER))
|
||||
_ = builder.AddComponents(IncludeStickersButton);
|
||||
|
|
@ -268,7 +268,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
|
|||
new TVar("Min", 0),
|
||||
new TVar("Max", (IncludeStickers ? SanitizedEmoteList.Count : SanitizedEmoteList.Where(x => x.Value.EntryType == EmojiType.EMOJI).Count())));
|
||||
_ = embed.AsLoading(ctx);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
for (var i = 0; i < SanitizedEmoteList.Count; i++)
|
||||
{
|
||||
|
|
@ -369,7 +369,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
|
|||
|
||||
embed.Description = this.GetString(this.t.Commands.Utility.EmojiStealer.SendingDm, true, new TVar("Type", emojiText));
|
||||
_ = embed.AsLoading(ctx);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
try
|
||||
{
|
||||
|
|
@ -416,7 +416,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
|
|||
cancellationTokenSource.Cancel();
|
||||
|
||||
embed.Description = this.GetString(this.t.Commands.Utility.EmojiStealer.PreparingZip, true);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed.AsLoading(ctx)));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed.AsLoading(ctx)));
|
||||
|
||||
using (var archive = new ZipArchive(zipFileStream, ZipArchiveMode.Create, true))
|
||||
{
|
||||
|
|
@ -476,7 +476,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
|
|||
new TVar("Type", emojiText));
|
||||
|
||||
_ = zipFileStream.Seek(0, SeekOrigin.Begin);
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithFile($"Emotes.zip", zipFileStream).WithEmbed(embed.AsSuccess(ctx)));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithFile($"Emotes.zip", zipFileStream).AddEmbed(embed.AsSuccess(ctx)));
|
||||
}
|
||||
return;
|
||||
}
|
||||
|
|
@ -493,7 +493,7 @@ internal sealed class EmojiStealerCommand : BaseCommand
|
|||
IncludeStickersButton = new DiscordButtonComponent((IncludeStickers ? ButtonStyle.Success : ButtonStyle.Danger), "ToggleStickers", this.GetString(this.t.Commands.Utility.EmojiStealer.ToggleStickers), !SanitizedEmoteList.Any(x => x.Value.EntryType == EmojiType.EMOJI), new DiscordComponentEmoji(DiscordEmoji.FromGuildEmote(ctx.Client, (ulong)(IncludeStickers ? 970278964755038248 : 970278964079767574))));
|
||||
AddToServerButton = new DiscordButtonComponent(ButtonStyle.Success, "AddToServer", (IncludeStickers ? this.GetString(this.t.Commands.Utility.EmojiStealer.AddEmojisAndStickerToServer) : this.GetString(this.t.Commands.Utility.EmojiStealer.AddEmojisToServer)), !ctx.Member.Permissions.HasPermission(Permissions.ManageGuildExpressions), new DiscordComponentEmoji(DiscordEmoji.FromUnicode("➕")));
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed);
|
||||
|
||||
if (SanitizedEmoteList.Any(x => x.Value.EntryType == EmojiType.STICKER))
|
||||
_ = builder.AddComponents(IncludeStickersButton);
|
||||
|
|
|
|||
|
|
@ -108,13 +108,13 @@ internal sealed class GuildInfoCommand : BaseCommand
|
|||
if (guild.RawFeatures.Count > 0)
|
||||
_ = embed.AddField(new DiscordEmbedField(this.GetString(CommandKey.GuildFeatures), $"{string.Join(", ", guild.RawFeatures.Select(x => $"`{string.Join(" ", x.Replace("_", " ").ToLower().Split(" ").Select(x => x.FirstLetterToUpper()))}`"))}"));
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed);
|
||||
|
||||
if (!guild.VanityUrlCode.IsNullOrWhiteSpace())
|
||||
_ = builder.AddComponents(new DiscordLinkButtonComponent($"https://discord.gg/{guild.VanityUrlCode}", this.GetString(CommandKey.JoinServer), false, DiscordEmoji.FromUnicode("🔗").ToComponent()));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder()
|
||||
.WithEmbed(embed)
|
||||
.AddEmbed(embed)
|
||||
.AddComponents(new DiscordLinkButtonComponent(guild.BannerUrl ?? "https://discord.gg", this.GetString(CommandKey.Banner), guild.BannerUrl is null),
|
||||
new DiscordLinkButtonComponent(guild.SplashUrl ?? "https://discord.gg", this.GetString(CommandKey.Splash), guild.BannerUrl is null),
|
||||
new DiscordLinkButtonComponent(guild.DiscoverySplashUrl ?? "https://discord.gg", this.GetString(CommandKey.DiscoverySplash), guild.BannerUrl is null),
|
||||
|
|
@ -127,7 +127,7 @@ internal sealed class GuildInfoCommand : BaseCommand
|
|||
// using (var file = new FileStream($"cache/{imageHash}", FileMode.Open, FileAccess.Read))
|
||||
// {
|
||||
// _ = await this.RespondOrEdit(new DiscordMessageBuilder()
|
||||
// .WithEmbed(embed)
|
||||
// .AddEmbed(embed)
|
||||
// .WithFile("banner.png", file));
|
||||
// }
|
||||
//}
|
||||
|
|
@ -162,7 +162,7 @@ internal sealed class GuildInfoCommand : BaseCommand
|
|||
_ = embed.AddField(new DiscordEmbedField(this.GetString(CommandKey.GuildFeatures), $"{string.Join(", ", preview.Features.Select(x => $"`{string.Join(" ", x.Replace("_", " ").ToLower().Split(" ").Select(x => x.FirstLetterToUpper()))}`"))}"));
|
||||
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed);
|
||||
|
||||
var invite = "";
|
||||
|
||||
|
|
@ -187,7 +187,7 @@ internal sealed class GuildInfoCommand : BaseCommand
|
|||
|
||||
_ = embed.AddField(new DiscordEmbedField(this.GetString(CommandKey.MemberTitle), $"🟢 `{widget.PresenceCount}` **{this.GetString(CommandKey.OnlineMembers)}**\n"));
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(embed);
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(embed);
|
||||
|
||||
if (!widget.InstantInviteUrl.IsNullOrWhiteSpace())
|
||||
_ = builder.AddComponents(new DiscordLinkButtonComponent(widget.InstantInviteUrl, this.GetString(CommandKey.JoinServer), false, DiscordEmoji.FromUnicode("🔗").ToComponent()));
|
||||
|
|
|
|||
|
|
@ -177,7 +177,7 @@ internal sealed class HelpCommand : BaseCommand
|
|||
var PreviousButton = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(this.t.Common.PreviousPage), (Page <= 0), DiscordEmoji.FromUnicode("◀").ToComponent());
|
||||
var NextButton = new DiscordButtonComponent(ButtonStyle.Primary, Guid.NewGuid().ToString(), this.GetString(this.t.Common.NextPage), (Page >= discordEmbeds.Count - 1), DiscordEmoji.FromUnicode("▶").ToComponent());
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(discordEmbeds.ElementAt(Page));
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(discordEmbeds.ElementAt(Page));
|
||||
|
||||
if (!PreviousButton.Disabled || !NextButton.Disabled)
|
||||
_ = builder.AddComponents(PreviousButton, NextButton);
|
||||
|
|
|
|||
|
|
@ -14,7 +14,7 @@ internal sealed class LeaderboardCommand : BaseCommand
|
|||
{
|
||||
return Task.Run(async () =>
|
||||
{
|
||||
var ShowAmount = (int)arguments["amount"];
|
||||
var ShowAmount = arguments.ContainsKey("amount") ? (int)arguments["amount"] : 10;
|
||||
|
||||
if (await ctx.DbUser.Cooldown.WaitForModerate(ctx))
|
||||
return;
|
||||
|
|
|
|||
|
|
@ -34,7 +34,7 @@ internal sealed class RemindersCommand : BaseCommand
|
|||
if (snoozeDescription is null)
|
||||
{
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder()
|
||||
.WithEmbed(new DiscordEmbedBuilder()
|
||||
.AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithDescription($"{this.GetString(this.t.Commands.Utility.Reminders.Count, true, new TVar("Count", rem.ScheduledReminders.Length))}\n\n" +
|
||||
$"{string.Join("\n\n", rem.ScheduledReminders.Select(x => $"> {x.Description.FullSanitize()}\n{this.GetString(this.t.Commands.Utility.Reminders.CreatedOn, new TVar("Guild", $"**{x.CreationPlace}**"))}\n{this.GetString(this.t.Commands.Utility.Reminders.DueTime, new TVar("Relative", x.DueTime.ToTimestamp()), new TVar("DateTime", x.DueTime.ToTimestamp(TimestampFormat.LongDateTime)))}").ToList())}\n\n" +
|
||||
$"**⚠ {this.GetString(this.t.Commands.Utility.Reminders.Notice)}**")
|
||||
|
|
@ -80,7 +80,7 @@ internal sealed class RemindersCommand : BaseCommand
|
|||
$"`{this.GetString(this.t.Commands.Utility.Reminders.DateTime).PadRight(padding)}`: {(selectedDueDate is null ? $"`{this.GetString(this.t.Common.NotSelected)}`" : $"{selectedDueDate.Value.ToTimestamp(TimestampFormat.LongDateTime)} ({selectedDueDate.Value.ToTimestamp()})")}"
|
||||
}.AsAwaitingInput(ctx, this.GetString(this.t.Commands.Utility.Reminders.Title));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(action_embed)
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(action_embed)
|
||||
.AddComponents(new List<DiscordComponent> { SelectDescriptionButton, SelectDueDateButton, Finish })
|
||||
.AddComponents(MessageComponents.GetBackButton(ctx.DbUser, ctx.Bot)));
|
||||
|
||||
|
|
|
|||
|
|
@ -40,7 +40,7 @@ internal sealed class ReportHostCommand : BaseCommand
|
|||
tos_embed.Description = tos_embed.Description.Insert(0, $"**{this.GetString(this.t.Commands.Utility.ReportHost.TosChangedNotice)}**\n\n");
|
||||
}
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(tos_embed).AddComponents(button));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(tos_embed).AddComponents(button));
|
||||
|
||||
var TosAccept = await ctx.WaitForButtonAsync(TimeSpan.FromMinutes(2));
|
||||
|
||||
|
|
@ -100,7 +100,7 @@ internal sealed class ReportHostCommand : BaseCommand
|
|||
|
||||
var ContinueButton = new DiscordButtonComponent(ButtonStyle.Success, Guid.NewGuid().ToString(), this.GetString(this.t.Common.Confirm), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("✅")));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(new List<DiscordComponent>
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(new List<DiscordComponent>
|
||||
{
|
||||
{ ContinueButton },
|
||||
{ MessageComponents.GetCancelButton(ctx.DbUser, ctx.Bot) }
|
||||
|
|
@ -158,7 +158,7 @@ internal sealed class ReportHostCommand : BaseCommand
|
|||
var BanUserButton = new DiscordButtonComponent(ButtonStyle.Danger, "ban_user", "Deny submission & ban submitter", false, new DiscordComponentEmoji(DiscordEmoji.FromGuildEmote(ctx.Client, 1005430134070841395)));
|
||||
var BanGuildButton = new DiscordButtonComponent(ButtonStyle.Danger, "ban_guild", "Deny submission & ban guild", false, new DiscordComponentEmoji(DiscordEmoji.FromGuildEmote(ctx.Client, 1005430134070841395)));
|
||||
|
||||
var submittedMsg = await channel.SendMessageAsync(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
var submittedMsg = await channel.SendMessageAsync(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = StatusIndicatorIcons.Success, Name = this.GetString(this.t.Commands.Utility.ReportHost.Title) },
|
||||
Color = EmbedColors.Success,
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ internal sealed class ReportTranslationCommand : BaseCommand
|
|||
tos_embed.Description = tos_embed.Description.Insert(0, $"**{this.GetString(CommandKey.TosChangedNotice)}**\n\n");
|
||||
}
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(tos_embed).AddComponents(button));
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(tos_embed).AddComponents(button));
|
||||
|
||||
var TosAccept = await ctx.WaitForButtonAsync(TimeSpan.FromMinutes(2));
|
||||
|
||||
|
|
|
|||
|
|
@ -32,7 +32,7 @@ internal sealed class UrbanDictionaryCommand : BaseCommand
|
|||
var Yes = new DiscordButtonComponent(ButtonStyle.Success, Guid.NewGuid().ToString(), this.GetString(this.t.Common.Yes), false, new DiscordComponentEmoji(true.ToEmote(ctx.Bot)));
|
||||
var No = new DiscordButtonComponent(ButtonStyle.Danger, Guid.NewGuid().ToString(), this.GetString(this.t.Common.No), false, new DiscordComponentEmoji(false.ToEmote(ctx.Bot)));
|
||||
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
_ = await this.RespondOrEdit(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Description = this.GetString(this.t.Commands.Utility.UrbanDictionary.AdultContentWarning, true)
|
||||
}.AsAwaitingInput(ctx)).AddComponents(new List<DiscordComponent> { Yes, No }));
|
||||
|
|
|
|||
|
|
@ -189,7 +189,7 @@ internal sealed class UserInfoCommand : BaseCommand
|
|||
if (bMember is not null && bMember.CommunicationDisabledUntil.HasValue && bMember.CommunicationDisabledUntil.Value.GetTotalSecondsUntil() > 0)
|
||||
_ = embed.AddField(new DiscordEmbedField(this.GetString(this.t.Commands.Utility.UserInfo.TimedOutUntil), $"{Formatter.Timestamp(bMember.CommunicationDisabledUntil.Value, TimestampFormat.LongDateTime)}", true));
|
||||
|
||||
_ = await this.RespondOrEdit(builder.WithEmbed(embed));
|
||||
_ = await this.RespondOrEdit(builder.AddEmbed(embed));
|
||||
|
||||
if (InviterButtonAdded)
|
||||
{
|
||||
|
|
|
|||
|
|
@ -25,6 +25,27 @@ public sealed class JoinSettings(Bot bot, Guild parent) : RequiresParent<Guild>(
|
|||
set => _ = this.Bot.DatabaseClient.SetValue("guilds", "serverid", this.Parent.Id, "joinlog_channel_id", value, this.Bot.DatabaseClient.mainDatabaseConnection);
|
||||
}
|
||||
|
||||
[ColumnName("usercount_channel_last_edit"), ColumnType(ColumnTypes.BigInt), Default("0")]
|
||||
public DateTime UserCountChannelLastEdit
|
||||
{
|
||||
get => this.Bot.DatabaseClient.GetValue<DateTime>("guilds", "serverid", this.Parent.Id, "usercount_channel_last_edit", this.Bot.DatabaseClient.mainDatabaseConnection);
|
||||
set => _ = this.Bot.DatabaseClient.SetValue("guilds", "serverid", this.Parent.Id, "usercount_channel_last_edit", value, this.Bot.DatabaseClient.mainDatabaseConnection);
|
||||
}
|
||||
|
||||
[ColumnName("usercount_channel_id"), ColumnType(ColumnTypes.BigInt), Default("0")]
|
||||
public ulong UserCountChannelId
|
||||
{
|
||||
get => this.Bot.DatabaseClient.GetValue<ulong>("guilds", "serverid", this.Parent.Id, "usercount_channel_id", this.Bot.DatabaseClient.mainDatabaseConnection);
|
||||
set => _ = this.Bot.DatabaseClient.SetValue("guilds", "serverid", this.Parent.Id, "usercount_channel_id", value, this.Bot.DatabaseClient.mainDatabaseConnection);
|
||||
}
|
||||
|
||||
[ColumnName("usercount_channel_format"), ColumnType(ColumnTypes.Text), Nullable]
|
||||
public string? UserCountChannelFormat
|
||||
{
|
||||
get => this.Bot.DatabaseClient.GetValue<string?>("guilds", "serverid", this.Parent.Id, "usercount_channel_format", this.Bot.DatabaseClient.mainDatabaseConnection);
|
||||
set => _ = this.Bot.DatabaseClient.SetValue("guilds", "serverid", this.Parent.Id, "usercount_channel_format", value, this.Bot.DatabaseClient.mainDatabaseConnection);
|
||||
}
|
||||
|
||||
[ColumnName("autoban_global_ban"), ColumnType(ColumnTypes.TinyInt), Default("0")]
|
||||
public bool AutoBanGlobalBans
|
||||
{
|
||||
|
|
|
|||
|
|
@ -52,6 +52,7 @@ public sealed class Status
|
|||
public EmojiConfig Emojis = new(config);
|
||||
public DiscordConfig Discord = new(config);
|
||||
public ChannelsConfig Channels = new(config);
|
||||
public QuickChartConfig QuickChart = new(config);
|
||||
|
||||
public sealed class DiscordConfig(Config config)
|
||||
{
|
||||
|
|
@ -113,6 +114,13 @@ public sealed class Status
|
|||
public ulong AbuseIPDB => config.Emojis.AbuseIPDB;
|
||||
public ulong Spotify => config.Emojis.Spotify;
|
||||
}
|
||||
|
||||
public sealed class QuickChartConfig(Config config)
|
||||
{
|
||||
public string? Scheme => config.Secrets.QuickChart.Scheme;
|
||||
public string? Host = config.Secrets.QuickChart.Host;
|
||||
public int? Port = config.Secrets.QuickChart.Port;
|
||||
}
|
||||
}
|
||||
|
||||
#region Legacy
|
||||
|
|
|
|||
|
|
@ -380,11 +380,15 @@ public class Translations : ITranslations
|
|||
public SingleTranslationKey CantUseRole;
|
||||
public SingleTranslationKey DisableRoleOnJoin;
|
||||
public SingleTranslationKey AutoAssignRoleName;
|
||||
public SingleTranslationKey DisableUserCountChannel;
|
||||
public SingleTranslationKey DisableJoinlog;
|
||||
public SingleTranslationKey JoinLogChannelName;
|
||||
public SingleTranslationKey ToggleReApplyNickname;
|
||||
public SingleTranslationKey ToggleReApplyRole;
|
||||
public SingleTranslationKey ChangeRoleButton;
|
||||
public SingleTranslationKey ChangeUserCountChannelFormatModal;
|
||||
public SingleTranslationKey ChangeUserCountChannelFormat;
|
||||
public SingleTranslationKey ChangeUserCountChannel;
|
||||
public SingleTranslationKey ChangeJoinlogChannelButton;
|
||||
public SingleTranslationKey ToggleGlobalBansButton;
|
||||
public SingleTranslationKey TimeNotice;
|
||||
|
|
@ -392,6 +396,8 @@ public class Translations : ITranslations
|
|||
public SingleTranslationKey ReApplyNickname;
|
||||
public SingleTranslationKey ReApplyRoles;
|
||||
public SingleTranslationKey Role;
|
||||
public SingleTranslationKey UserCountChannelFormat;
|
||||
public SingleTranslationKey UserCountChannel;
|
||||
public SingleTranslationKey JoinLogChannel;
|
||||
public SingleTranslationKey Autoban;
|
||||
public SingleTranslationKey Title;
|
||||
|
|
|
|||
|
|
@ -48,7 +48,7 @@ public sealed class ReminderSettings : RequiresParent<User>
|
|||
|
||||
var user = await this.Bot.DiscordClient.GetFirstShard().GetUserAsync(this.Parent.Id);
|
||||
|
||||
var builder = new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
var builder = new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithDescription($"> {b.Description.FullSanitize()}\n" +
|
||||
$"{CommandKey.CreatedOn.Get(this.Bot.Users[user.Id]).Build(new TVar("Guild", b.CreationPlace))}\n" +
|
||||
$"{CommandKey.CreatedAt.Get(this.Bot.Users[user.Id]).Build(new TVar("Timestamp", $"{b.CreationTime.ToTimestamp()} ({b.CreationTime.ToTimestamp(TimestampFormat.LongDateTime)})"))}\n" +
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Project Makoto
|
||||
// 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
|
||||
|
|
@ -42,7 +42,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
$"{string.Join("\n\n", globalNote.Notes.Select(x => $"{x.Reason.FullSanitize()} - <@{x.Moderator}> {x.Timestamp.ToTimestamp()}"))}".TruncateWithIndication(512)));
|
||||
}
|
||||
|
||||
var message = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var message = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
await Task.Delay(5000);
|
||||
|
||||
|
|
@ -63,7 +63,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
if (this.Bot.Guilds[e.Guild.Id].InviteNotes.Notes.Any(x => x.Invite == this.Bot.Guilds[e.Guild.Id].Members[e.Member.Id].InviteTracker.Code))
|
||||
embed.Description += $"**{this.tKey.InviteNote.Get(this.Bot.Guilds[e.Guild.Id])}**: `{this.Bot.Guilds[e.Guild.Id].InviteNotes.Notes.First(x => x.Invite == this.Bot.Guilds[e.Guild.Id].Members[e.Member.Id].InviteTracker.Code).Note.SanitizeForCode()}`";
|
||||
|
||||
_ = message.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = message.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
}
|
||||
|
||||
internal async Task UserLeft(DiscordClient sender, GuildMemberRemoveEventArgs e)
|
||||
|
|
@ -83,7 +83,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
if (e.Member.Roles.Any())
|
||||
_ = embed.AddField(new DiscordEmbedField(this.tKey.Roles.Get(this.Bot.Guilds[e.Guild.Id]).Build(), $"{string.Join(", ", e.Member.Roles.Select(x => x.Mention))}".TruncateWithIndication(1000)));
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
for (var i = 0; i < 3; i++)
|
||||
{
|
||||
|
|
@ -106,7 +106,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
embed.Footer = new();
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.KickedBy.Get(this.Bot.Guilds[e.Guild.Id])}' & '{this.tKey.Reason.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -160,7 +160,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
if (embed.Fields.Count == 0)
|
||||
return;
|
||||
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
}
|
||||
|
||||
internal async Task VoiceStateUpdated(DiscordClient sender, VoiceStateUpdateEventArgs e)
|
||||
|
|
@ -174,7 +174,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
if (PreviousChannel != NewChannel)
|
||||
if (PreviousChannel is null && NewChannel is not null)
|
||||
{
|
||||
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithAuthor(this.tKey.UserJoinedVoiceChannel.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.VoiceStateUserJoined)
|
||||
.WithThumbnail(e.User.AvatarUrl)
|
||||
.WithColor(EmbedColors.Success)
|
||||
|
|
@ -185,7 +185,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
}
|
||||
else if (PreviousChannel is not null && NewChannel is null)
|
||||
{
|
||||
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithAuthor(this.tKey.UserLeftVoiceChannel.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.VoiceStateUserLeft)
|
||||
.WithThumbnail(e.User.AvatarUrl)
|
||||
.WithColor(EmbedColors.Error)
|
||||
|
|
@ -196,7 +196,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
}
|
||||
else if (PreviousChannel is not null && NewChannel is not null)
|
||||
{
|
||||
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithAuthor(this.tKey.UserSwitchedVoiceChannel.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.VoiceStateUserUpdated)
|
||||
.WithThumbnail(e.User.AvatarUrl)
|
||||
.WithColor(EmbedColors.Warning)
|
||||
|
|
@ -264,7 +264,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
using (var fileStream = new MemoryStream(Encoding.UTF8.GetBytes(Messages)))
|
||||
{
|
||||
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed).WithFile(FileName, fileStream)
|
||||
_ = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed).WithFile(FileName, fileStream)
|
||||
.AddComponents(new DiscordLinkButtonComponent($"{this.Bot.status.LoadedConfig.WebServer.UrlPrefix}/{e.Guild.Id}/DeletedMessages/{FileName}", "Open in Browser",
|
||||
this.Bot.status.LoadedConfig.WebServer.UrlPrefix.IsNullOrWhiteSpace())));
|
||||
}
|
||||
|
|
@ -311,7 +311,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
return;
|
||||
}
|
||||
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
}
|
||||
|
||||
internal async Task MemberUpdated(DiscordClient sender, GuildMemberUpdateEventArgs e)
|
||||
|
|
@ -339,7 +339,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
else
|
||||
_ = embed.AddField(new DiscordEmbedField(this.tKey.NewNickname.Get(this.Bot.Guilds[e.Guild.Id]), $"`{e.NicknameAfter}`"));
|
||||
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
}
|
||||
|
||||
var RolesUpdated = false;
|
||||
|
|
@ -427,7 +427,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
embed.Description += $"\n\n{Roles}";
|
||||
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
}
|
||||
|
||||
if (e.TimeoutBefore != e.TimeoutAfter)
|
||||
|
|
@ -436,7 +436,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
var timeBefore = (e.TimeoutBefore ?? DateTime.Today.AddDays(-300)).ToUniversalTime();
|
||||
|
||||
if (timeAfter > timeBefore)
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithAuthor(this.tKey.TimedOut.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.UserBanned)
|
||||
.WithColor(EmbedColors.Error)
|
||||
.WithFooter($"{this.tKey.UserId.Get(this.Bot.Guilds[e.Guild.Id])}: {e.Member.Id}")
|
||||
|
|
@ -446,7 +446,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
$"**{this.tKey.TimedOutUntil.Get(this.Bot.Guilds[e.Guild.Id])}**: {timeAfter.Timestamp(TimestampFormat.LongDateTime)} ({timeAfter.Timestamp()})")));
|
||||
|
||||
if (timeAfter < timeBefore)
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithAuthor(this.tKey.TimeoutRemoved.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.UserBanRemoved)
|
||||
.WithColor(EmbedColors.Success)
|
||||
.WithFooter($"{this.tKey.UserId.Get(this.Bot.Guilds[e.Guild.Id])}: {e.Member.Id}")
|
||||
|
|
@ -460,7 +460,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
try
|
||||
{
|
||||
if ((e.PendingBefore is null && e.PendingAfter is true) || (e.PendingAfter is true && e.PendingBefore is false))
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithAuthor(this.tKey.MembershipApproved.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.UserAdded)
|
||||
.WithColor(EmbedColors.Success)
|
||||
.WithFooter($"{this.tKey.UserId.Get(this.Bot.Guilds[e.Guild.Id])}: {e.Member.Id}")
|
||||
|
|
@ -478,7 +478,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
//{
|
||||
// // Normal avatar updates don't seem to fire the member updated event, will keep this code for potential future updates.
|
||||
|
||||
// _ = SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
// _ = SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
// {
|
||||
// Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = AuditLogIcons.UserUpdated, Name = $"Member Profile Picture updated" },
|
||||
// Color = EmbedColors.Warning,
|
||||
|
|
@ -492,7 +492,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
if (e.GuildAvatarHashBefore != e.GuildAvatarHashAfter)
|
||||
{
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithAuthor(this.tKey.GuildProfilePictureUpdated.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.UserUpdated)
|
||||
.WithColor(EmbedColors.Warning)
|
||||
.WithFooter($"{this.tKey.UserId.Get(this.Bot.Guilds[e.Guild.Id])}: {e.Member.Id}")
|
||||
|
|
@ -513,12 +513,12 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
if (e.Role.IsManaged)
|
||||
{
|
||||
if (e.Role.Tags?.PremiumSubscriber ?? false)
|
||||
if (e.Role.Type is RoleType.Booster)
|
||||
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: `{this.tKey.ServerBooster.Get(this.Bot.Guilds[e.Guild.Id])}`\n\n";
|
||||
|
||||
if (e.Role.Tags?.BotId is not null and not 0)
|
||||
if (e.Role.Type is RoleType.Bot)
|
||||
{
|
||||
var bot = await sender.GetUserAsync((ulong)e.Role.Tags.BotId);
|
||||
var bot = await sender.GetUserAsync(e.Role.Tags!.BotId.Value);
|
||||
|
||||
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: {bot.Mention} `{bot.GetUsernameWithIdentifier()}`\n\n";
|
||||
}
|
||||
|
|
@ -536,7 +536,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
$"{Integration}" +
|
||||
$"\n**{this.tKey.Permissions.Get(this.Bot.Guilds[e.Guild.Id])}**: {GeneratePermissions}");
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
return;
|
||||
|
|
@ -555,7 +555,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.CreatedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -573,12 +573,12 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
if (e.Role.IsManaged)
|
||||
{
|
||||
if (e.Role.Tags?.PremiumSubscriber ?? false)
|
||||
if (e.Role.Type is RoleType.Booster)
|
||||
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: `{this.tKey.ServerBooster.Get(this.Bot.Guilds[e.Guild.Id])}`\n\n";
|
||||
|
||||
if (e.Role.Tags.BotId is not null and not 0)
|
||||
if (e.Role.Type is RoleType.Bot)
|
||||
{
|
||||
var bot = await sender.GetUserAsync((ulong)e.Role.Tags.BotId);
|
||||
var bot = await sender.GetUserAsync(e.Role.Tags!.BotId.Value);
|
||||
|
||||
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: {bot.Mention} `{bot.GetUsernameWithIdentifier()}`\n\n";
|
||||
}
|
||||
|
|
@ -597,7 +597,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
$"{Integration}\n" +
|
||||
$"\n**{this.tKey.Permissions.Get(this.Bot.Guilds[e.Guild.Id])}**: {GeneratePermissions}");
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
return;
|
||||
|
|
@ -616,7 +616,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.DeletedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -671,12 +671,12 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
if (e.RoleAfter.IsManaged)
|
||||
{
|
||||
if (e.RoleAfter.Tags?.PremiumSubscriber ?? false)
|
||||
if (e.RoleAfter.Type is RoleType.Booster)
|
||||
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: `{this.tKey.ServerBooster.Get(this.Bot.Guilds[e.Guild.Id])}`\n\n";
|
||||
|
||||
if (e.RoleAfter.Tags?.BotId is not null and not 0)
|
||||
if (e.RoleAfter.Type is RoleType.Bot)
|
||||
{
|
||||
var bot = await sender.GetUserAsync((ulong)e.RoleAfter.Tags.BotId);
|
||||
var bot = await sender.GetUserAsync(e.RoleAfter.Tags!.BotId.Value);
|
||||
|
||||
Integration = $"**{this.tKey.Integration.Get(this.Bot.Guilds[e.Guild.Id])}**: {bot.Mention} `{bot.GetUsernameWithIdentifier()}`\n\n";
|
||||
}
|
||||
|
|
@ -702,7 +702,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
$"{Integration}" +
|
||||
$"{PermissionDifference}");
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
return;
|
||||
|
|
@ -721,7 +721,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.ModifiedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -751,7 +751,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
.TruncateWithIndication(1000)));
|
||||
}
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
return;
|
||||
|
|
@ -772,7 +772,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.BannedBy.Get(this.Bot.Guilds[e.Guild.Id])}' & '{this.tKey.Reason.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -793,7 +793,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
.WithThumbnail(e.Member.AvatarUrl)
|
||||
.WithDescription($"**{this.tKey.User.Get(this.Bot.Guilds[e.Guild.Id])}**: {e.Member.Mention} `{e.Member.GetUsernameWithIdentifier()}`");
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
return;
|
||||
|
|
@ -811,7 +811,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.UnbannedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -927,7 +927,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
if (e.GuildBefore.IconHash != e.GuildAfter.IconHash)
|
||||
embed.ImageUrl = e.GuildAfter.IconUrl;
|
||||
|
||||
var msg = await this.SendActionlog(e.GuildAfter, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.GuildAfter, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
if (!this.Bot.Guilds[e.GuildAfter.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
return;
|
||||
|
|
@ -946,7 +946,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
embed.Footer = new();
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.GuildAfter.Id]).Build(new TVar("Fields", $"'{this.tKey.ModifiedBy.Get(this.Bot.Guilds[e.GuildAfter.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -966,7 +966,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
.WithTimestamp(DateTime.UtcNow)
|
||||
.WithDescription($"**{this.tKey.Name.Get(this.Bot.Guilds[e.Guild.Id])}**: {e.Channel.Mention} `[{e.Channel.GetIcon()}{e.Channel.Name}]`");
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
return;
|
||||
|
|
@ -985,7 +985,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.CreatedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -1005,7 +1005,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
.WithTimestamp(DateTime.UtcNow)
|
||||
.WithDescription($"**{this.tKey.Name.Get(this.Bot.Guilds[e.Guild.Id])}**: `[{e.Channel.GetIcon()}{e.Channel.Name}]`");
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
return;
|
||||
|
|
@ -1024,7 +1024,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.DeletedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -1055,7 +1055,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
.WithTimestamp(DateTime.UtcNow)
|
||||
.WithDescription(Description);
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
return;
|
||||
|
|
@ -1074,7 +1074,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.ModifiedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
@ -1087,7 +1087,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
if (!await this.ValidateServer(e.Guild) || !this.Bot.Guilds[e.Guild.Id].ActionLog.InvitesModified)
|
||||
return;
|
||||
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder()
|
||||
_ = this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithAuthor(this.tKey.InviteCreated.Get(this.Bot.Guilds[e.Guild.Id]), null, AuditLogIcons.InviteAdded)
|
||||
.WithColor(EmbedColors.Success)
|
||||
.WithTimestamp(DateTime.UtcNow)
|
||||
|
|
@ -1109,7 +1109,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
$"**{this.tKey.CreatedBy.Get(this.Bot.Guilds[e.Guild.Id])}**: {e.Invite.Inviter?.Mention ?? this.tKey.NoInviter.Get(this.Bot.Guilds[e.Guild.Id]).Build(true)} `{e.Invite.Inviter?.GetUsernameWithIdentifier() ?? "-"}`\n" +
|
||||
$"**{this.tKey.Channel.Get(this.Bot.Guilds[e.Guild.Id])}**: {e.Channel.Mention} `[{e.Channel.GetIcon()}{e.Channel.Name}]`");
|
||||
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().WithEmbed(embed));
|
||||
var msg = await this.SendActionlog(e.Guild, new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
|
||||
if (!this.Bot.Guilds[e.Guild.Id].ActionLog.AttemptGettingMoreDetails)
|
||||
|
|
@ -1130,7 +1130,7 @@ internal sealed class ActionlogEvents(Bot bot) : RequiresTranslation(bot)
|
|||
embed.Footer = new();
|
||||
embed.Footer.Text += $"\n({this.tKey.FooterAuditLogDisclaimer.Get(this.Bot.Guilds[e.Guild.Id]).Build(new TVar("Fields", $"'{this.tKey.DeletedBy.Get(this.Bot.Guilds[e.Guild.Id])}'"))})";
|
||||
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
break;
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Project Makoto
|
||||
// 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
|
||||
|
|
@ -55,7 +55,7 @@ internal sealed class EmbedMessagesEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
var JumpToMessage = new DiscordLinkButtonComponent(message.JumpLink.ToString(), this.t.Common.JumpToMessage.Get(this.Bot.Guilds[e.Guild.Id]), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("💬")));
|
||||
|
||||
var msg = await e.Message.RespondAsync(new DiscordMessageBuilder().WithEmbed(new DiscordEmbedBuilder
|
||||
var msg = await e.Message.RespondAsync(new DiscordMessageBuilder().AddEmbed(new DiscordEmbedBuilder
|
||||
{
|
||||
Author = new DiscordEmbedBuilder.EmbedAuthor { IconUrl = message.Author.AvatarUrl, Name = $"{message.Author.GetUsernameWithIdentifier()}" },
|
||||
Color = message.Author.BannerColor ?? EmbedColors.Info,
|
||||
|
|
@ -63,7 +63,7 @@ internal sealed class EmbedMessagesEvents(Bot bot) : RequiresTranslation(bot)
|
|||
ImageUrl = (message.Attachments?.Count > 0 && (message.Attachments[0].Filename.EndsWith(".png")
|
||||
|| message.Attachments[0].Filename.EndsWith(".jpeg")
|
||||
|| message.Attachments[0].Filename.EndsWith(".jpg")
|
||||
|| message.Attachments[0].Filename.EndsWith(".gif")) ? message.Attachments[0].Url : ""),
|
||||
|| message.Attachments[0].Filename.EndsWith(".gif")) ? message.Attachments[0].Url.ToString() : ""),
|
||||
Timestamp = message.Timestamp,
|
||||
}).AddComponents(JumpToMessage, Delete));
|
||||
}
|
||||
|
|
|
|||
|
|
@ -54,6 +54,7 @@ internal sealed class JoinEvents(Bot bot) : RequiresTranslation(bot)
|
|||
}
|
||||
}
|
||||
|
||||
await RunUserCountUpdater(this.Bot, e.Guild);
|
||||
await this.Bot.Guilds[e.Guild.Id].Members[e.Member.Id].PerformAutoKickChecks(e.Guild, e.Member);
|
||||
}
|
||||
|
||||
|
|
@ -81,5 +82,39 @@ internal sealed class JoinEvents(Bot bot) : RequiresTranslation(bot)
|
|||
});
|
||||
}
|
||||
}
|
||||
|
||||
await RunUserCountUpdater(this.Bot, e.Guild);
|
||||
}
|
||||
|
||||
internal static async Task RunUserCountUpdater(Bot bot, DiscordGuild Guild)
|
||||
{
|
||||
if (bot.Guilds[Guild.Id].Join.UserCountChannelId != 0)
|
||||
{
|
||||
if (Guild.Channels.ContainsKey(bot.Guilds[Guild.Id].Join.UserCountChannelId))
|
||||
{
|
||||
foreach (var b in ScheduledTaskExtensions.GetScheduledTasks())
|
||||
{
|
||||
if (b.CustomData is not ScheduledTaskIdentifier scheduledTaskIdentifier)
|
||||
continue;
|
||||
|
||||
if (scheduledTaskIdentifier.Snowflake == Guild.Id && scheduledTaskIdentifier.Type == "usercount")
|
||||
b.Delete();
|
||||
}
|
||||
|
||||
_ = new Func<Task>(async () =>
|
||||
{
|
||||
_ = Guild.GetChannel(bot.Guilds[Guild.Id].Join.UserCountChannelId).ModifyAsync(x =>
|
||||
{
|
||||
x.Name = (bot.Guilds[Guild.Id].Join.UserCountChannelFormat is null ? "Count: %s" : bot.Guilds[Guild.Id].Join.UserCountChannelFormat)
|
||||
.Replace("%s", Guild.MemberCount);
|
||||
})
|
||||
.ContinueWith(x =>
|
||||
{
|
||||
bot.Guilds[Guild.Id].Join.UserCountChannelLastEdit = DateTime.UtcNow;
|
||||
});
|
||||
}).CreateScheduledTask(bot.Guilds[Guild.Id].Join.UserCountChannelLastEdit.AddMinutes(5),
|
||||
new ScheduledTaskIdentifier(Guild.Id, "", "usercount"));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
|||
|
|
@ -81,7 +81,7 @@ internal sealed class PhishingProtectionEvents(Bot bot) : RequiresTranslation(bo
|
|||
|
||||
_ = embed.AddFields(report_fields.Take(2));
|
||||
|
||||
_ = e.RespondAsync(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(new DiscordLinkButtonComponent($"https://www.abuseipdb.com/check/{parsedIp[0]}", this.tKey.OpenInBrowser.Get(this.Bot.Guilds[guild.Id]))));
|
||||
_ = e.RespondAsync(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(new DiscordLinkButtonComponent($"https://www.abuseipdb.com/check/{parsedIp[0]}", this.tKey.OpenInBrowser.Get(this.Bot.Guilds[guild.Id]))));
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -87,7 +87,7 @@ internal sealed class TokenLeakEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
var s = (InvalidateCount > 1 ? "s" : "");
|
||||
|
||||
_ = e.Channel.SendMessageAsync(new DiscordMessageBuilder().WithEmbed(
|
||||
_ = e.Channel.SendMessageAsync(new DiscordMessageBuilder().AddEmbed(
|
||||
new DiscordEmbedBuilder()
|
||||
.WithColor(EmbedColors.Error)
|
||||
.WithAuthor(sender.CurrentUser.GetUsername(), null, sender.CurrentUser.AvatarUrl)
|
||||
|
|
|
|||
|
|
@ -49,7 +49,7 @@ internal sealed class VcCreatorEvents(Bot bot) : RequiresTranslation(bot)
|
|||
|
||||
_ = await newChannel.SendMessageAsync(new DiscordMessageBuilder()
|
||||
.WithContent(e.User.Mention)
|
||||
.WithEmbed(new DiscordEmbedBuilder()
|
||||
.AddEmbed(new DiscordEmbedBuilder()
|
||||
.WithAuthor(e.Guild.Name, "", e.Guild.IconUrl)
|
||||
.WithColor(EmbedColors.Info)
|
||||
.WithTimestamp(DateTime.UtcNow)
|
||||
|
|
|
|||
|
|
@ -41,26 +41,26 @@
|
|||
|
||||
<ItemGroup>
|
||||
<PackageReference Include="DisCatSharp.Extensions.TwoFactorCommands" Version="3.1.0" />
|
||||
<PackageReference Include="FFMpegCore" Version="5.1.0" />
|
||||
<PackageReference Include="GenHTTP.Core" Version="9.6.0" />
|
||||
<PackageReference Include="GenHTTP.Modules.StaticWebsites" Version="9.6.0" />
|
||||
<PackageReference Include="HtmlSanitizer" Version="8.1.870" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.12.0" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.Scripting" Version="4.12.0" />
|
||||
<PackageReference Include="FFMpegCore" Version="5.2.0" />
|
||||
<PackageReference Include="GenHTTP.Core" Version="9.7.0" />
|
||||
<PackageReference Include="GenHTTP.Modules.StaticWebsites" Version="9.7.0" />
|
||||
<PackageReference Include="HtmlSanitizer" Version="9.0.884" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.CSharp" Version="4.14.0" />
|
||||
<PackageReference Include="Microsoft.CodeAnalysis.Scripting" Version="4.14.0" />
|
||||
<PackageReference Include="MySqlConnector" Version="2.4.0" />
|
||||
<PackageReference Include="Octokit" Version="14.0.0" />
|
||||
<PackageReference Include="Serilog" Version="4.2.0" />
|
||||
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.0" />
|
||||
<PackageReference Include="Serilog.Extensions.Logging" Version="9.0.1" />
|
||||
<PackageReference Include="Serilog.Sinks.Console" Version="6.0.0" />
|
||||
<PackageReference Include="Serilog.Sinks.File" Version="6.0.0" />
|
||||
<PackageReference Include="Serilog.Sinks.File" Version="7.0.0" />
|
||||
<PackageReference Include="System.Data.SqlClient" Version="4.9.0" />
|
||||
<PackageReference Include="System.Data.SQLite" Version="1.0.119" />
|
||||
<PackageReference Include="DisCatSharp.Analyzer.Roselyn" Version="6.2.5">
|
||||
<PrivateAssets>all</PrivateAssets>
|
||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||
</PackageReference>
|
||||
<PackageReference Include="System.Drawing.Common" Version="9.0.1" />
|
||||
<PackageReference Include="System.Text.Json" Version="9.0.1" />
|
||||
<PackageReference Include="System.Drawing.Common" Version="9.0.9" />
|
||||
<PackageReference Include="System.Text.Json" Version="9.0.9" />
|
||||
</ItemGroup>
|
||||
|
||||
<ItemGroup>
|
||||
|
|
|
|||
|
|
@ -59,28 +59,28 @@ Global
|
|||
x64|x64 = x64|x64
|
||||
EndGlobalSection
|
||||
GlobalSection(ProjectConfigurationPlatforms) = postSolution
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Debug|x64.Build.0 = Debug|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|Any CPU.Build.0 = Release|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|x64.ActiveCfg = Release|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.Release|x64.Build.0 = Release|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|Any CPU.ActiveCfg = x64|Any CPU
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|Any CPU.Build.0 = x64|Any CPU
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|Any CPU.ActiveCfg = x64|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|Any CPU.Build.0 = x64|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|x64.ActiveCfg = x64|x64
|
||||
{A47FCB9F-FEA3-4810-9C77-4CC47DB5BD19}.x64|x64.Build.0 = x64|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|Any CPU.ActiveCfg = Debug|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|Any CPU.Build.0 = Debug|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|x64.ActiveCfg = Debug|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Debug|x64.Build.0 = Debug|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|Any CPU.ActiveCfg = Release|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|Any CPU.Build.0 = Release|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|x64.ActiveCfg = Release|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.Release|x64.Build.0 = Release|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|Any CPU.ActiveCfg = x64|Any CPU
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|Any CPU.Build.0 = x64|Any CPU
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|Any CPU.ActiveCfg = x64|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|Any CPU.Build.0 = x64|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|x64.ActiveCfg = x64|x64
|
||||
{906F9C70-17B3-4B6D-AFFF-976338D641C4}.x64|x64.Build.0 = x64|x64
|
||||
{8BD34631-4327-4533-8587-93E38D7A5DD9}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
|
|
@ -215,18 +215,6 @@ Global
|
|||
{40158660-CD40-44A8-8834-077C132B7DDD}.x64|Any CPU.Build.0 = Debug|Any CPU
|
||||
{40158660-CD40-44A8-8834-077C132B7DDD}.x64|x64.ActiveCfg = Debug|Any CPU
|
||||
{40158660-CD40-44A8-8834-077C132B7DDD}.x64|x64.Build.0 = Debug|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Debug|x64.Build.0 = Debug|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Release|x64.ActiveCfg = Release|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.Release|x64.Build.0 = Release|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.x64|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.x64|Any CPU.Build.0 = Debug|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.x64|x64.ActiveCfg = Debug|Any CPU
|
||||
{7F04788A-8B14-4C62-A247-3B1F93C01B03}.x64|x64.Build.0 = Debug|Any CPU
|
||||
{0AB29534-3D3E-4482-A98A-8F1C01C4B476}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||
{0AB29534-3D3E-4482-A98A-8F1C01C4B476}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||
{0AB29534-3D3E-4482-A98A-8F1C01C4B476}.Debug|x64.ActiveCfg = Debug|Any CPU
|
||||
|
|
|
|||
|
|
@ -3780,6 +3780,14 @@
|
|||
"en": "Joinlog Channel",
|
||||
"de": "Beitrittsprotokoll-Kanal"
|
||||
},
|
||||
"UserCountChannel": {
|
||||
"en": "User Count Channel",
|
||||
"de": "Benutzeranzahl-Kanal"
|
||||
},
|
||||
"UserCountChannelFormat": {
|
||||
"en": "User Count Format",
|
||||
"de": "Benutzeranzahl-Format"
|
||||
},
|
||||
"Role": {
|
||||
"en": "Role On Join",
|
||||
"de": "Rolle beim Beitritt"
|
||||
|
|
@ -3808,6 +3816,18 @@
|
|||
"en": "Change Joinlog Channel",
|
||||
"de": "Beitrittsprotokoll-Kanal ändern"
|
||||
},
|
||||
"ChangeUserCountChannel": {
|
||||
"en": "Change User Count Channel",
|
||||
"de": "Benutzeranzahl-Kanal ändern"
|
||||
},
|
||||
"ChangeUserCountChannelFormat": {
|
||||
"en": "Change User Count Format",
|
||||
"de": "Benutzeranzahl-Format ändern"
|
||||
},
|
||||
"ChangeUserCountChannelFormatModal": {
|
||||
"en": "User Count Format | %s as placeholder",
|
||||
"de": "Benutzeranzahl-Format | %s für Platzhalter"
|
||||
},
|
||||
"ChangeRoleButton": {
|
||||
"en": "Change Role assigned on join",
|
||||
"de": "Beim Beitritt zugewiesene Rolle ändern"
|
||||
|
|
@ -3828,6 +3848,10 @@
|
|||
"en": "Disable Joinlog",
|
||||
"de": "Beitrittsprotokoll deaktivieren"
|
||||
},
|
||||
"DisableUserCountChannel": {
|
||||
"en": "Disable User Count Channel",
|
||||
"de": "Benutzeranzahl-Kanal deaktivieren"
|
||||
},
|
||||
"AutoAssignRoleName": {
|
||||
"en": "Automatically Assigned Role",
|
||||
"de": "Automatisch zugewiesene Rolle"
|
||||
|
|
|
|||
|
|
@ -173,7 +173,7 @@ internal sealed class ExperienceHandler : RequiresTranslation
|
|||
|
||||
this.Bot.Users[user.Id].ExperienceUser.DirectMessageOptOut = true;
|
||||
|
||||
_ = await msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = await msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
_ = await (await user.CreateDmChannelAsync()).SendMessageAsync(this.tKey.AutomaticDeletion.Get(this.Bot.Users[user.Id]).Build(
|
||||
new TVar("Command", "`/levelrewards-optin`"),
|
||||
|
|
@ -187,7 +187,7 @@ internal sealed class ExperienceHandler : RequiresTranslation
|
|||
{ new DiscordButtonComponent(ButtonStyle.Secondary, "opt-out-experience-dm", this.tKey.DisableDirectMessages.Get(this.Bot.Users[user.Id]), false, new DiscordComponentEmoji(DiscordEmoji.FromUnicode("⛔"))) },
|
||||
};
|
||||
|
||||
msg = await (await user.CreateDmChannelAsync()).SendMessageAsync(new DiscordMessageBuilder().WithEmbed(embed).AddComponents(discordComponents));
|
||||
msg = await (await user.CreateDmChannelAsync()).SendMessageAsync(new DiscordMessageBuilder().AddEmbed(embed).AddComponents(discordComponents));
|
||||
|
||||
this.Bot.DiscordClient.ComponentInteractionCreated += RunInteraction;
|
||||
|
||||
|
|
@ -195,7 +195,7 @@ internal sealed class ExperienceHandler : RequiresTranslation
|
|||
{
|
||||
await Task.Delay(3600000);
|
||||
embed.Footer.Text += $" • {this.t.Commands.Common.InteractionTimeout.Get(this.Bot.Users[user.Id])}";
|
||||
_ = await msg.ModifyAsync(new DiscordMessageBuilder().WithEmbed(embed));
|
||||
_ = await msg.ModifyAsync(new DiscordMessageBuilder().AddEmbed(embed));
|
||||
|
||||
this.Bot.DiscordClient.ComponentInteractionCreated -= RunInteraction;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1,4 +1,4 @@
|
|||
// Project Makoto
|
||||
// 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
|
||||
|
|
@ -156,23 +156,23 @@ public static class DiscordExtensions
|
|||
}))}" +
|
||||
$"{string.Join("", msg.Attachments?.Select(x =>
|
||||
{
|
||||
var tempUrl = x.Url.TruncateAt(true, '?');
|
||||
var tempUrl = x.Url.ToString().TruncateAt(true, '?');
|
||||
var type = string.Empty;
|
||||
var alt = x.Description;
|
||||
|
||||
if (x.Url.EndsWith(".jpg", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.EndsWith(".jpeg", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.EndsWith(".png", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.EndsWith(".webp", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.EndsWith(".gifv", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.EndsWith(".gif", StringComparison.InvariantCultureIgnoreCase))
|
||||
if (x.Url.ToString().EndsWith(".jpg", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.ToString().EndsWith(".jpeg", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.ToString().EndsWith(".png", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.ToString().EndsWith(".webp", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.ToString().EndsWith(".gifv", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.ToString().EndsWith(".gif", StringComparison.InvariantCultureIgnoreCase))
|
||||
type = "image";
|
||||
else if (x.Url.EndsWith(".webm", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.EndsWith(".mp4", StringComparison.InvariantCultureIgnoreCase))
|
||||
else if (x.Url.ToString().EndsWith(".webm", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.ToString().EndsWith(".mp4", StringComparison.InvariantCultureIgnoreCase))
|
||||
type = "video";
|
||||
else if (x.Url.EndsWith(".wav", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.EndsWith(".ogg", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.EndsWith(".mp3", StringComparison.InvariantCultureIgnoreCase))
|
||||
else if (x.Url.ToString().EndsWith(".wav", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.ToString().EndsWith(".ogg", StringComparison.InvariantCultureIgnoreCase) ||
|
||||
x.Url.ToString().EndsWith(".mp3", StringComparison.InvariantCultureIgnoreCase))
|
||||
type = "audio";
|
||||
else
|
||||
{
|
||||
|
|
@ -182,7 +182,7 @@ public static class DiscordExtensions
|
|||
|
||||
return $"<discord-attachment slot=\"attachments\" " +
|
||||
$"type=\"{type}\" " +
|
||||
$"url=\"{Sanitize(x.Url)}\" " +
|
||||
$"url=\"{Sanitize(x.Url.ToString())}\" " +
|
||||
$"alt=\"{Sanitize(alt)}\" " +
|
||||
$"size=\"{x.FileSize.Value.FileSizeToHumanReadable()}\" " +
|
||||
$"height=\"{x.Height}\" " +
|
||||
|
|
@ -222,7 +222,7 @@ public static class DiscordExtensions
|
|||
|
||||
return $"<discord-attachment slot=\"attachments\" " +
|
||||
$"type=\"{type}\" " +
|
||||
$"url=\"{Sanitize(x.Url)}\" " +
|
||||
$"url=\"{Sanitize(x.Url.ToString())}\" " +
|
||||
$"alt=\"{Sanitize(alt)}\" " +
|
||||
$"height=\"160\" " +
|
||||
$"width=\"160\"/>";
|
||||
|
|
@ -548,10 +548,10 @@ public static class DiscordExtensions
|
|||
=> DigitsToEmotes(i.ToString());
|
||||
|
||||
public static string ToTimestamp(this DateTime dateTime, TimestampFormat format = TimestampFormat.RelativeTime)
|
||||
=> Formatter.Timestamp(dateTime, format);
|
||||
=> dateTime.Timestamp(format);
|
||||
|
||||
public static string ToTimestamp(this DateTimeOffset dateTime, TimestampFormat format = TimestampFormat.RelativeTime)
|
||||
=> Formatter.Timestamp(dateTime, format);
|
||||
=> dateTime.Timestamp(format);
|
||||
|
||||
public static string GetCommandMention(this DiscordClient client, Bot bot, string command)
|
||||
=> (bot.status.LoadedConfig.IsDev ?
|
||||
|
|
|
|||
|
|
@ -137,11 +137,11 @@ internal static class CommandCompiler
|
|||
case MakotoCommandType.SlashCommand:
|
||||
if (command.IsGroup)
|
||||
return $$"""
|
||||
[{{typeof(SlashCommandGroupAttribute).FullName}}("{{command.Name}}", "{{command.Description}}"{{(command.RequiredPermissions is null ? "" : $", {(long)command.RequiredPermissions}")}}, dmPermission: {{command.AllowPrivateUsage.ToString().ToLower()}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
|
||||
[{{typeof(SlashCommandGroupAttribute).FullName}}("{{command.Name}}", "{{command.Description}}"{{(command.RequiredPermissions is null ? "" : $", {(long)command.RequiredPermissions}")}}, {{(command.AllowPrivateUsage ? string.Empty : "allowedContexts: [InteractionContextType.Guild]")}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
|
||||
""";
|
||||
else
|
||||
return $$"""
|
||||
[{{typeof(SlashCommandAttribute).FullName}}("{{command.Name}}", "{{command.Description}}"{{(command.RequiredPermissions is null ? "" : $", {(long)command.RequiredPermissions}")}}, dmPermission: {{command.AllowPrivateUsage.ToString().ToLower()}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
|
||||
[{{typeof(SlashCommandAttribute).FullName}}("{{command.Name}}", "{{command.Description}}"{{(command.RequiredPermissions is null ? "" : $", {(long)command.RequiredPermissions}")}}, {{(command.AllowPrivateUsage ? string.Empty : "allowedContexts: [InteractionContextType.Guild]")}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
|
||||
""";
|
||||
case MakotoCommandType.PrefixCommand:
|
||||
if (command.IsGroup)
|
||||
|
|
@ -156,7 +156,7 @@ internal static class CommandCompiler
|
|||
""";
|
||||
case MakotoCommandType.ContextMenu:
|
||||
return $$"""
|
||||
[{{typeof(ContextMenuAttribute).FullName}}({{typeof(ApplicationCommandType).FullName}}.{{Enum.GetName(typeof(ApplicationCommandType), command.ContextMenuType)}}, "{{command.Name}}", dmPermission: {{command.AllowPrivateUsage.ToString().ToLower()}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
|
||||
[{{typeof(ContextMenuAttribute).FullName}}({{typeof(ApplicationCommandType).FullName}}.{{Enum.GetName(typeof(ApplicationCommandType), command.ContextMenuType)}}, "{{command.Name}}", {{(command.AllowPrivateUsage ? string.Empty : "allowedContexts: [InteractionContextType.Guild]")}}, isNsfw: {{command.IsNsfw.ToString().ToLower()}})]
|
||||
""";
|
||||
|
||||
default:
|
||||
|
|
|
|||
|
|
@ -260,7 +260,7 @@ internal static class DisCatSharpExtensionsLoader
|
|||
DebugStartup = true
|
||||
});
|
||||
|
||||
if (bot.status.CurrentAppHash != bot.status.LoadedConfig.DontModify.LastKnownHash)
|
||||
if (bot.status.CurrentAppHash != bot.status.LoadedConfig.DontModify.LastKnownHash && Directory.Exists("CompiledCommands"))
|
||||
{
|
||||
Log.Debug("Clearing cached Commands..");
|
||||
await FileExtensions.CleanupFilesAndDirectories(new(), Directory.GetFiles("CompiledCommands").ToList());
|
||||
|
|
|
|||
|
|
@ -14,10 +14,13 @@ internal static class SyncTasks
|
|||
{
|
||||
internal static async Task GuildDownloadCompleted(Bot bot, DiscordClient sender, GuildDownloadCompletedEventArgs e)
|
||||
{
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
if (bot.status.DiscordGuildDownloadCompleted)
|
||||
return;
|
||||
|
||||
bot.status.DiscordGuildDownloadCompleted = true;
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
{
|
||||
Log.Information("I'm on {GuildsCount} guilds.", e.Guilds.Count);
|
||||
|
||||
_ = Task.Run(async () =>
|
||||
|
|
@ -121,8 +124,14 @@ internal static class SyncTasks
|
|||
}).Add(bot);
|
||||
}
|
||||
|
||||
internal static DateTime lastSyncTaskTime = DateTime.MinValue;
|
||||
internal static async Task ExecuteSyncTasks(Bot bot, DiscordShardedClient shardedClient)
|
||||
{
|
||||
if (lastSyncTaskTime.GetTimespanSince() < TimeSpan.FromSeconds(30))
|
||||
return;
|
||||
|
||||
lastSyncTaskTime = DateTime.UtcNow;
|
||||
|
||||
var Guilds = shardedClient.GetGuilds();
|
||||
|
||||
ObservableList<Task> runningTasks = new();
|
||||
|
|
|
|||
|
|
@ -1,6 +1,7 @@
|
|||
<h1 align="center">Makoto</h1>
|
||||
<p align="center"><img src="ProjectMakoto/Assets/Prod.png" width=250 align="center"></p>
|
||||
<p align="center" style="font-weight:bold;">A feature packed discord bot!</p>
|
||||
<a href="#getting-makoto" ><p align="center"><img src="ProjectMakoto/Assets/AddToServer.png" width=350 align="center"></p></a>
|
||||
|
||||
<p align="center"><img src="https://github.com/Fortunevale/ProjectMakoto/actions/workflows/dev.yml/badge.svg?branch=dev" align="center">
|
||||
<p align="center"><img src="https://img.shields.io/github/contributors/Fortunevale/ProjectMakoto" align="center"> <img src="https://img.shields.io/github/issues-raw/Fortunevale/ProjectMakoto" align="center"></p>
|
||||
|
|
@ -44,7 +45,7 @@ Makoto has a lot of features, current notable features are:
|
|||
<br></br>
|
||||
## Getting Makoto
|
||||
|
||||
## The bot is no longer publicly available. Feel free to host it yourself.
|
||||
## [Click here to invite the bot](https://discord.com/api/oauth2/authorize?client_id=947716263394824213&permissions=8&scope=bot%20applications.commands)
|
||||
|
||||
- Phishing Protection is enabled by default, people will be banned if they send a link known to be malicious. To change this, run `/config phishing`.
|
||||
- Automatic User/Bot Token invalidation is turned on by default. If you don't know what this means, just leave it on. If you know what this means and you don't want this happen, run `/config tokendetection` to disable it.
|
||||
|
|
|
|||
|
|
@ -1,21 +1,22 @@
|
|||
{
|
||||
"$schema": "https://docs.renovatebot.com/renovate-schema.json",
|
||||
"extends": [
|
||||
"config:recommended"
|
||||
],
|
||||
"baseBranches": [
|
||||
"dev"
|
||||
"config:base"
|
||||
],
|
||||
"baseBranches": ["dev"],
|
||||
"prHourlyLimit": 9,
|
||||
"bumpVersion": "prerelease",
|
||||
"packageRules": [
|
||||
{
|
||||
"excludePackagePatterns": [ "Extensions" ],
|
||||
"matchPackagePrefixes": [ "DisCatSharp" ],
|
||||
"groupName": "discatsharp",
|
||||
"automerge": true,
|
||||
"matchPackageNames": [
|
||||
"!/Extensions/",
|
||||
"DisCatSharp{/,}**"
|
||||
]
|
||||
"automerge": false,
|
||||
"enabled": false
|
||||
},
|
||||
{
|
||||
"managers": ["github-actions"],
|
||||
"enabled": false
|
||||
}
|
||||
],
|
||||
"git-submodules": {
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue