Skip to content

Commit 7d7354d

Browse files
committed
Merge branch 'release/9.0.0'
2 parents 245ccad + 0d1dcc1 commit 7d7354d

File tree

270 files changed

+82637
-310377
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

270 files changed

+82637
-310377
lines changed

.github/workflows/alpha-deployment.yml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -36,8 +36,8 @@ jobs:
3636
.nuke/temp
3737
~/.nuget/packages
3838
key: ${{ runner.os }}-${{ hashFiles('**/global.json', '**/*.csproj', '**/Directory.Packages.props') }}
39-
- name: 'Run: Test, Pack, Publish'
40-
run: ./build.cmd Test Pack Publish
39+
- name: 'Run: Publish'
40+
run: ./build.cmd Publish
4141
env:
4242
FeedzNuGetApiKey: ${{ secrets.FEEDZ_NUGET_API_KEY }}
4343
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}

.run/Publish MSBuildTasks.run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
<component name="ProjectRunConfigurationManager">
22
<configuration default="false" name="Publish MSBuildTasks" type="RunNativeExe" factoryName="Native Executable">
33
<option name="EXE_PATH" value="/usr/local/share/dotnet/dotnet" />
4-
<option name="PROGRAM_PARAMETERS" value="publish --framework netcoreapp2.1" />
4+
<option name="PROGRAM_PARAMETERS" value="publish --framework net9.0" />
55
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/source/Nuke.MSBuildTasks" />
66
<option name="PASS_PARENT_ENVS" value="1" />
77
<option name="USE_EXTERNAL_CONSOLE" value="0" />

.run/Run MSBuildTasks.run.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
<component name="ProjectRunConfigurationManager">
22
<configuration default="false" name="Run MSBuildTasks" type="RunExe" factoryName=".NET Executable">
3-
<option name="EXE_PATH" value="/usr/local/share/dotnet/sdk/7.0.100/MSBuild.dll" />
3+
<option name="EXE_PATH" value="/usr/local/share/dotnet/sdk/9.0.100/MSBuild.dll" />
44
<option name="PROGRAM_PARAMETERS" value="/t:Clean;Restore;Publish;Pack /p:NukeTasksEnabled=True /bl" />
55
<option name="WORKING_DIRECTORY" value="$PROJECT_DIR$/build" />
66
<option name="PASS_PARENT_ENVS" value="1" />

CHANGELOG.md

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,10 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
66

77
## [vNext]
88

9+
## [9.0.0] / 2024-11-21
10+
- Removed usages of `BinaryFormatter`
11+
- Changed minimum framework from `net6.0` to `net8.0`
12+
913
## [8.1.4] / 2024-11-06
1014
- Fixed `build.schema.json` generation to use `allOf` for user and base type properties
1115

@@ -1174,7 +1178,8 @@ and this project adheres to [Semantic Versioning](http://semver.org/spec/v2.0.0.
11741178
- Added CLT tasks for Git
11751179
- Fixed background color in console output
11761180

1177-
[vNext]: https://github.com/nuke-build/nuke/compare/8.1.4...HEAD
1181+
[vNext]: https://github.com/nuke-build/nuke/compare/9.0.0...HEAD
1182+
[9.0.0]: https://github.com/nuke-build/nuke/compare/8.1.4...9.0.0
11781183
[8.1.4]: https://github.com/nuke-build/nuke/compare/8.1.3...8.1.4
11791184
[8.1.3]: https://github.com/nuke-build/nuke/compare/8.1.2...8.1.3
11801185
[8.1.2]: https://github.com/nuke-build/nuke/compare/8.1.1...8.1.2

Directory.Packages.props

Lines changed: 22 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -11,16 +11,16 @@
1111
<PackageVersion Include="Azure.Security.KeyVault.Secrets" Version="4.7.0" />
1212
<PackageVersion Include="Basic.Reference.Assemblies.NetStandard20" Version="1.7.9" />
1313
<PackageVersion Include="Glob" Version="1.1.9" />
14-
<PackageVersion Include="HtmlAgilityPack" Version="1.11.70" />
14+
<PackageVersion Include="HtmlAgilityPack" Version="1.11.71" />
1515
<PackageVersion Include="Humanizer" Version="2.14.1" />
1616
<PackageVersion Include="JetBrains.Annotations" Version="2024.3.0" />
1717
<PackageVersion Include="Microsoft.ApplicationInsights" Version="2.22.0" />
18-
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="8.0.2" />
18+
<PackageVersion Include="Microsoft.Extensions.DependencyModel" Version="9.0.0" />
1919
<PackageVersion Include="Microsoft.SourceLink.GitHub" Version="8.0.0" />
20-
<PackageVersion Include="NJsonSchema" Version="11.0.2" />
21-
<PackageVersion Include="NJsonSchema.NewtonsoftJson" Version="11.0.2" />
20+
<PackageVersion Include="NJsonSchema" Version="11.1.0" />
21+
<PackageVersion Include="NJsonSchema.NewtonsoftJson" Version="11.1.0" />
2222
<PackageVersion Include="Newtonsoft.Json" Version="13.0.3" />
23-
<PackageVersion Include="NuGet.Packaging" Version="6.11.1" />
23+
<PackageVersion Include="NuGet.Packaging" Version="6.12.1" />
2424
<PackageVersion Include="Octokit" Version="13.0.1" />
2525
<PackageVersion Include="Serilog" Version="4.1.0" />
2626
<PackageVersion Include="Serilog.Formatting.Compact" Version="3.0.0" />
@@ -30,21 +30,21 @@
3030
<PackageVersion Include="SharpZipLib" Version="1.4.2" />
3131
<PackageVersion Include="System.ComponentModel.Annotations" Version="5.0.0" />
3232
<PackageVersion Include="System.Net.Http" Version="4.3.4" />
33-
<PackageVersion Include="System.Text.Json" Version="8.0.5" />
34-
<PackageVersion Include="YamlDotNet" Version="16.1.3" />
33+
<PackageVersion Include="System.Text.Json" Version="9.0.0" />
34+
<PackageVersion Include="YamlDotNet" Version="16.2.0" />
3535
<PackageVersion Include="matkoch.spectre.console" Version="0.46.0" />
3636
</ItemGroup>
3737

3838
<!-- Testing -->
3939
<ItemGroup>
4040
<PackageVersion Include="coverlet.msbuild" Version="6.0.2" />
41-
<PackageVersion Include="FluentAssertions" Version="6.12.1" />
41+
<PackageVersion Include="FluentAssertions" Version="6.12.2" />
4242
<PackageVersion Include="GitHubActionsTestLogger" Version="2.4.1" />
43-
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.10.0" />
44-
<PackageVersion Include="TeamCity.VSTest.TestAdapter" Version="1.0.41" />
45-
<PackageVersion Include="Verify.Xunit" Version="25.0.2" />
46-
<PackageVersion Include="Verify.DiffPlex" Version="2.3.0" />
47-
<PackageVersion Include="Verify.SourceGenerators" Version="2.2.0" />
43+
<PackageVersion Include="Microsoft.NET.Test.Sdk" Version="17.12.0" />
44+
<!-- <PackageVersion Include="TeamCity.VSTest.TestAdapter" Version="1.0.41" />-->
45+
<PackageVersion Include="Verify.Xunit" Version="28.3.2" />
46+
<PackageVersion Include="Verify.DiffPlex" Version="3.1.2" />
47+
<PackageVersion Include="Verify.SourceGenerators" Version="2.5.0" />
4848
<PackageVersion Include="xunit" Version="2.9.2" />
4949
<PackageVersion Include="xunit.runner.visualstudio" Version="2.8.2" />
5050
</ItemGroup>
@@ -62,24 +62,17 @@
6262
<ItemGroup>
6363
<PackageVersion Include="Microsoft.Build.Locator" Version="1.7.8" />
6464

65-
<PackageVersion Include="Microsoft.Build" Version="17.10.4" />
66-
<PackageVersion Include="Microsoft.Build.Framework" Version="17.10.4" />
67-
<PackageVersion Include="Microsoft.Build.Tasks.Core" Version="17.10.4" />
68-
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="17.10.4" />
65+
<PackageVersion Include="Microsoft.Build" Version="17.12.6" />
66+
<PackageVersion Include="Microsoft.Build.Framework" Version="17.12.6" />
67+
<PackageVersion Include="Microsoft.Build.Tasks.Core" Version="17.12.6" />
68+
<PackageVersion Include="Microsoft.Build.Utilities.Core" Version="17.12.6" />
6969
</ItemGroup>
7070

71-
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
72-
<PackageVersion Update="Microsoft.Build" Version="17.5.0" />
73-
<PackageVersion Update="Microsoft.Build.Framework" Version="17.5.0" />
74-
<PackageVersion Update="Microsoft.Build.Tasks.Core" Version="17.5.0" />
75-
<PackageVersion Update="Microsoft.Build.Utilities.Core" Version="17.5.0" />
76-
</ItemGroup>
77-
78-
<ItemGroup Condition="'$(TargetFramework)' == 'net6.0'">
79-
<PackageVersion Update="Microsoft.Build" Version="16.9.0" />
80-
<PackageVersion Update="Microsoft.Build.Framework" Version="16.9.0" />
81-
<PackageVersion Update="Microsoft.Build.Tasks.Core" Version="16.9.0" />
82-
<PackageVersion Update="Microsoft.Build.Utilities.Core" Version="16.9.0" />
71+
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
72+
<PackageVersion Update="Microsoft.Build" Version="17.11.4" />
73+
<PackageVersion Update="Microsoft.Build.Framework" Version="17.11.4" />
74+
<PackageVersion Update="Microsoft.Build.Tasks.Core" Version="17.11.4" />
75+
<PackageVersion Update="Microsoft.Build.Utilities.Core" Version="17.11.4" />
8376
</ItemGroup>
8477

8578
</Project>

README.md

Lines changed: 9 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -56,25 +56,27 @@ NUKE builds and tests itself on several CI/CD services, which helps to ensure a
5656

5757
- [ASP.NET Boilerplate](https://aspnetboilerplate.com/) <sup><a href="https://github.com/aspnetboilerplate/aspnetboilerplate">1</a></sup>
5858
- [AvaloniaUI](https://avaloniaui.net/) <sup><a href="https://github.com/AvaloniaUI/Avalonia">1</a></sup>
59-
- **[Aviva Solutions B.V.](https://www.avivasolutions.nl/)** <sup><a href="https://github.com/avivasolutionsnl/sitecore-commerce-docker">1</a> <a href="https://github.com/avivasolutionsnl/sitecore-docker">2</a></sup>
59+
- [Aviva Solutions B.V.](https://www.avivasolutions.nl/) <sup><a href="https://github.com/avivasolutionsnl/sitecore-commerce-docker">1</a> <a href="https://github.com/avivasolutionsnl/sitecore-docker">2</a></sup>
6060
- [ChilliCream](https://chillicream.com/) <sup><a href="https://github.com/ChilliCream/hotchocolate">1</a></sup>
6161
- [CsvHelper](https://joshclose.github.io/CsvHelper/) <sup><a href="https://github.com/JoshClose/CsvHelper">1</a></sup>
6262
- [DNN Community](https://dnncommunity.org/) <sup><a href="https://github.com/DNNCommunity/Dnn.ModuleCreator">1</a></sup>
6363
- [FluentAssertions](https://fluentassertions.com/) <sup><a href="https://github.com/fluentassertions/fluentassertions">1</a></sup>
64-
- **[JetBrains s.r.o.](https://www.jetbrains.com/)** <sup><a href="https://github.com/JetBrains/space-dotnet-sdk">1</a> <a href="https://github.com/JetBrains/YouTrackSharp">2</a></sup>
64+
- [JetBrains s.r.o.](https://www.jetbrains.com/) <sup><a href="https://github.com/JetBrains/space-dotnet-sdk">1</a> <a href="https://github.com/JetBrains/YouTrackSharp">2</a></sup>
6565
- [NSwag](https://github.com/RicoSuter/NSwag/) <sup><a href="https://github.com/RicoSuter/NSwag/">1</a></sup>
66-
- **[Octopus Deploy Pty. Ltd.](https://www.octopus.com/)** <sup><a href="https://github.com/OctopusDeploy/OctopusTentacle">1</a> <a href="https://github.com/OctopusDeploy/OctopusClients">2</a> <a href="https://github.com/OctopusDeploy/Octodiff">3</a></sup>
66+
- [Octopus Deploy Pty. Ltd.](https://www.octopus.com/) <sup><a href="https://github.com/OctopusDeploy/OctopusTentacle">1</a> <a href="https://github.com/OctopusDeploy/OctopusClients">2</a> <a href="https://github.com/OctopusDeploy/Octodiff">3</a></sup>
6767
- [OmniSharp](http://www.omnisharp.net/) <sup><a href="https://github.com/OmniSharp/csharp-language-server-protocol">1</a></sup>
6868
- [Quartz.NET](https://github.com/quartznet/quartznet) <sup><a href="https://github.com/quartznet/quartznet/">1</a></sup>
69-
- **[VirtoCommerce](https://virtocommerce.com/)** <sup><a href="https://github.com/VirtoCommerce/vc-build/">1</a></sup>
69+
- [VirtoCommerce](https://virtocommerce.com/) <sup><a href="https://github.com/VirtoCommerce/vc-build/">1</a></sup>
7070

7171
## Sponsors
7272

7373
Thanks to all companies, organizations, and individuals who are sponsoring the further development of this project. Your support means a lot! 💙
7474

75-
[<picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/nuke-build/nuke/develop/images/octopusdeploy-dark.svg"><img alt="Octopus Deploy" height="170px" src="https://raw.githubusercontent.com/nuke-build/nuke/develop/images/octopusdeploy-light.svg"></picture>](https://octopus.com)
75+
[<picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/nuke-build/nuke/refs/heads/develop/images/octopusdeploy-dark.svg"><img alt="Octopus Deploy" height="170px" src="https://raw.githubusercontent.com/nuke-build/nuke/refs/heads/develop/images/octopusdeploy-light.svg"></picture>](https://octopus.com)
7676

77-
[<picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/nuke-build/nuke/develop/images/aws-dark.png"><img alt="Amazon Web Services" height="160px" src="https://raw.githubusercontent.com/nuke-build/nuke/develop/images/aws-light.png"></picture>](https://aws.amazon.com/)
77+
[<picture><source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/nuke-build/nuke/refs/heads/develop/images/aws-dark.png"><img alt="Amazon Web Services" height="160px" src="https://raw.githubusercontent.com/nuke-build/nuke/refs/heads/develop/images/aws-light.png"></picture>](https://aws.amazon.com/)
78+
79+
[<img height="120px" src="https://raw.githubusercontent.com/nuke-build/nuke/refs/heads/develop/images/datadog.svg" alt="Datadog" />](https://datadoghq.com/)
7880

7981
[<img height="60px" src="https://www.dangl-it.de/media/1195/logo-en-rectangular.png" alt="Dangl-IT GmbH" />](https://www.dangl-it.com/)
8082
[<img height="60px" src="https://peiitalliance.com/logos/LevelingUp-Logo.svg" alt="Leveling Up" />](https://github.com/ron-myers)
@@ -106,7 +108,7 @@ Thanks to all companies, organizations, and individuals who are sponsoring the f
106108

107109
Thanks to [JetBrains](https://jetbrains.com) for providing licenses for [Rider](https://jetbrains.com/rider) and access to a [TeamCity Cloud](https://jetbrains.com/teamcity) instance, which both make open-source development a real pleasure!
108110

109-
[<img src="https://raw.githubusercontent.com/nuke-build/nuke/develop/images/jetbrains.png" width="450" />](https://jetbrains.com/)
111+
[<img src="https://raw.githubusercontent.com/nuke-build/nuke/refs/heads/develop/images/jetbrains.png" width="450" />](https://jetbrains.com/)
110112

111113
Thanks to [SignPath](https://signpath.io?utm_source=foundation&utm_medium=github&utm_campaign=nukebuild) for providing free code signing service and to the [SignPath Foundation](https://signpath.org?utm_source=foundation&utm_medium=github&utm_campaign=nukebuild) for a free code signing certificate.
112114

build/AwtrixNotificationsAttribute.cs

Lines changed: 107 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,107 @@
1+
// Copyright 2024 Maintainers of NUKE.
2+
// Distributed under the MIT License.
3+
// https://github.com/nuke-build/nuke/blob/master/LICENSE
4+
5+
using System;
6+
using System.Collections.Generic;
7+
using System.Linq;
8+
using System.Threading;
9+
using JetBrains.Annotations;
10+
using MQTTnet;
11+
using MQTTnet.Client;
12+
using MQTTnet.Protocol;
13+
using Newtonsoft.Json;
14+
using Nuke.Common;
15+
using Nuke.Common.Execution;
16+
17+
[PublicAPI]
18+
public class AwtrixNotificationsAttribute : BuildExtensionAttributeBase,
19+
IOnBuildCreated,
20+
IOnTargetRunning,
21+
IOnBuildFinished
22+
{
23+
private readonly IMqttClient _mqttClient;
24+
25+
public string MqttHost => EnvironmentInfo.GetVariable("NUKE_AWTRIX_MQTT_HOST");
26+
public int? MqttPort => EnvironmentInfo.GetVariable<int?>("NUKE_AWTRIX_MQTT_PORT").NotNull();
27+
public string MqttTopicPrefix => EnvironmentInfo.GetVariable("NUKE_AWTRIX_MQTT_PREFIX").NotNullOrWhiteSpace();
28+
29+
public AwtrixNotificationsAttribute()
30+
{
31+
if (MqttHost == null)
32+
return;
33+
34+
_mqttClient = new MqttFactory().CreateMqttClient();
35+
_mqttClient.ConnectAsync(new MqttClientOptionsBuilder()
36+
.WithTcpServer(MqttHost, MqttPort)
37+
.Build(),
38+
CancellationToken.None).GetAwaiter().GetResult();
39+
}
40+
41+
public int RunningIconId { get; set; } = 13546;
42+
public int SuccessIconId { get; set; } = 39396;
43+
public int FailureIconId { get; set; } = 8510;
44+
public string ProjectName { get; set; } = "Build";
45+
46+
protected virtual object CreateBuildCreatedPayload()
47+
{
48+
return new
49+
{
50+
icon = RunningIconId,
51+
text = ProjectName,
52+
hold = true,
53+
stack = false,
54+
};
55+
}
56+
57+
protected virtual object CreateTargetRunningPayload(ExecutableTarget target)
58+
{
59+
var progress = (Build.SucceededTargets.Count + Build.FailedTargets.Count) / (double)Build.ExecutionPlan.Count * 100;
60+
return new
61+
{
62+
icon = RunningIconId,
63+
text = target.Name,
64+
progress,
65+
progressC = Build.IsSucceeding ? "#00ff00" : "#ff0000",
66+
progressBC = "#333333",
67+
hold = true,
68+
stack = false,
69+
};
70+
}
71+
72+
protected virtual object CreateBuildFinishedPayload()
73+
{
74+
return new
75+
{
76+
icon = Build.IsSucceeding ? SuccessIconId : FailureIconId,
77+
text = ProjectName,
78+
hold = !Build.IsSucceeding,
79+
stack = false,
80+
};
81+
}
82+
83+
public void OnBuildCreated(IReadOnlyCollection<ExecutableTarget> executableTargets)
84+
{
85+
PublishMqttMessage(CreateBuildCreatedPayload());
86+
}
87+
88+
public void OnTargetRunning(ExecutableTarget target)
89+
{
90+
PublishMqttMessage(CreateTargetRunningPayload(target));
91+
}
92+
93+
public void OnBuildFinished()
94+
{
95+
PublishMqttMessage(CreateBuildFinishedPayload());
96+
}
97+
98+
private void PublishMqttMessage(object payload)
99+
{
100+
_mqttClient?.PublishAsync(new MqttApplicationMessageBuilder()
101+
.WithTopic($"{MqttTopicPrefix}/notify")
102+
.WithPayload(JsonConvert.SerializeObject(payload))
103+
.WithQualityOfServiceLevel(MqttQualityOfServiceLevel.ExactlyOnce)
104+
.Build(),
105+
CancellationToken.None).GetAwaiter().GetResult();
106+
}
107+
}

build/Build.Announce.cs

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ partial class Build
7474
new (string Text, string Url)[]
7575
{
7676
("Octopus Deploy", "https://octopus.com/"),
77+
("Datadog", "https://datadoghq.com/"),
7778
("Amazon Web Services", "https://aws.amazon.com/"),
7879
};
7980

@@ -87,14 +88,14 @@ partial class Build
8788
.Executes(async () =>
8889
{
8990
await SendSlackMessageAsync(_ => _
90-
.AddAttachment(_ => _
91+
.AddAttachments(_ => _
9192
.SetFallback(AnnouncementTitle)
9293
.SetAuthorName(AnnouncementTitle)
9394
.SetAuthorLink(AnnouncementLink)
9495
.SetColor($"#{AnnouncementColor:x8}")
9596
.SetThumbUrl(AnnouncementThumbnailUrl)
9697
.SetText(new StringBuilder()
97-
.Append($"<!channel>, this release includes *<{AnnouncementComparisonUrl}|{AnnouncementGitInfo.CommitsText}>*")
98+
.Append($"<!channel>, this new release includes *<{AnnouncementComparisonUrl}|{AnnouncementGitInfo.CommitsText}>*")
9899
.AppendLine(AnnouncementGitInfo.NotableCommmitters.Count > 0
99100
? $" with notable contributions from {AnnouncementGitInfo.NotableCommmitters.JoinCommaAnd()}. A round of applause for them! :clap:"
100101
: ". No contributions this time. :sweat_smile:")
@@ -117,13 +118,13 @@ await SendSlackMessageAsync(_ => _
117118
{
118119
await SendDiscordMessageAsync(_ => _
119120
.SetContent("@everyone")
120-
.AddEmbed(_ => _
121+
.AddEmbeds(_ => _
121122
.SetTitle(AnnouncementTitle)
122123
.SetColor(AnnouncementColor)
123-
.SetThumbnail(new DiscordEmbedThumbnail()
124+
.SetThumbnail(_ => _
124125
.SetUrl(AnnouncementThumbnailUrl))
125126
.SetDescription(new StringBuilder()
126-
.Append($"This [release]({AnnouncementLink}) includes *[{AnnouncementGitInfo.CommitsText}]({AnnouncementComparisonUrl})*")
127+
.Append($"This new release includes *[{AnnouncementGitInfo.CommitsText}]({AnnouncementComparisonUrl})*")
127128
.AppendLine(AnnouncementGitInfo.NotableCommmitters.Count > 0
128129
? $" with notable contributions from {AnnouncementGitInfo.NotableCommmitters.JoinCommaAnd()}. A round of applause for them! 👏"
129130
: ". No contributions this time. 😅")
@@ -132,7 +133,7 @@ await SendDiscordMessageAsync(_ => _
132133
.AppendLine()
133134
.AppendLine(AnnouncementReleaseNotes).ToString()
134135
.Replace("*", "**"))
135-
.SetFooter(new DiscordEmbedFooter()
136+
.SetFooter(_ => _
136137
.SetText($"Powered by {AnnouncementSponsors.Select(x => x.Text).JoinCommaAnd()}.")
137138
.SetIconUrl("https://cdn.discordapp.com/emojis/674275938757771306.webp?size=240&quality=lossless"))),
138139
DiscordWebhook);

0 commit comments

Comments
 (0)