Skip to content

Commit

Permalink
Merge branch 'discord-net:dev' into fix/channel-topic-nre
Browse files Browse the repository at this point in the history
  • Loading branch information
Misha-133 authored Feb 23, 2024
2 parents 4535cef + 4a05ba5 commit 27df6b4
Show file tree
Hide file tree
Showing 26 changed files with 292 additions and 72 deletions.
130 changes: 130 additions & 0 deletions .github/workflows/dotnet.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,130 @@
name: Dotnet Build

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}

on:
push:
branches: ["dev"]
tags: ["*"]
paths-ignore:
- 'docs/**'
pull_request:

jobs:
build:
name: Build and Test
runs-on: ubuntu-latest
env:
ArtifactStagingDirectory: "artifacts"
IsTagBuild: false
DOTNET_INSTALL_DIR: "/usr/share/dotnet"
Suffix: ${{ github.run_number }}
steps:
- uses: actions/checkout@v4

- name: Setup .NET
uses: actions/setup-dotnet@v4
with:
dotnet-version: 8.0.x

- name: Is Tag Build
if: startsWith(github.ref, 'refs/tags/')
run: echo "IsTagBuild=true" >> $GITHUB_ENV

- name: Generate Suffix
if: env.IsTagBuild != 'true'
run: echo "Suffix=$(date +'%Y%m%d')-${{ github.run_number }}" >> $GITHUB_ENV

- name: Restore
run: dotnet restore ./Discord.Net.sln -v minimal

- name: Build
run: dotnet build "Discord.Net.sln" -v minimal -c Release --no-restore /p:BuildNumber=${{ env.Suffix }} /p:IsTagBuild=$(IsTagBuild)

- name: Unit Test
run: dotnet test "test/Discord.Net.Tests.Unit/Discord.Net.Tests.Unit.csproj" --no-restore --no-build -v minimal -c Release --logger trx

- name: Analyzer Test
run: dotnet test "test/Discord.Net.Analyzers.Tests/Discord.Net.Analyzers.Tests.csproj" --no-restore --no-build -v minimal -c Release --logger trx

- name: Publish Test Results
uses: EnricoMi/publish-unit-test-result-action@v2
if: failure() || success()
with:
files: ./**/*.trx

- name: Pack
env:
buildNumber: $Suffix
run: |
dotnet pack "src\Discord.Net.Core\Discord.Net.Core.csproj" --no-restore --no-build -v minimal -c Release -o ${{ env.ArtifactStagingDirectory }} /p:BuildNumber=${{ env.Suffix }} /p:IsTagBuild=${{ env.IsTagBuild }}
dotnet pack "src\Discord.Net.Rest\Discord.Net.Rest.csproj" --no-restore --no-build -v minimal -c Release -o ${{ env.ArtifactStagingDirectory }} /p:BuildNumber=${{ env.Suffix }} /p:IsTagBuild=${{ env.IsTagBuild }}
dotnet pack "src\Discord.Net.WebSocket\Discord.Net.WebSocket.csproj" --no-restore --no-build -v minimal -c Release -o ${{ env.ArtifactStagingDirectory }} /p:BuildNumber=${{ env.Suffix }} /p:IsTagBuild=${{ env.IsTagBuild }}
dotnet pack "src\Discord.Net.Commands\Discord.Net.Commands.csproj" --no-restore --no-build -v minimal -c Release -o ${{ env.ArtifactStagingDirectory }} /p:BuildNumber=${{ env.Suffix }} /p:IsTagBuild=${{ env.IsTagBuild }}
dotnet pack "src\Discord.Net.Webhook\Discord.Net.Webhook.csproj" --no-restore --no-build -v minimal -c Release -o ${{ env.ArtifactStagingDirectory }} /p:BuildNumber=${{ env.Suffix }} /p:IsTagBuild=${{ env.IsTagBuild }}
dotnet pack "src\Discord.Net.Analyzers\Discord.Net.Analyzers.csproj" --no-restore --no-build -v minimal -c Release -o ${{ env.ArtifactStagingDirectory }} /p:BuildNumber=${{ env.Suffix }} /p:IsTagBuild=${{ env.IsTagBuild }}
dotnet pack "src\Discord.Net.Interactions\Discord.Net.Interactions.csproj" --no-restore --no-build -v minimal -c Release -o ${{ env.ArtifactStagingDirectory }} /p:BuildNumber=${{ env.Suffix }} /p:IsTagBuild=${{ env.IsTagBuild }}
dotnet pack "experiment\Discord.Net.BuildOverrides\Discord.Net.BuildOverrides.csproj" --no-restore --no-build -v minimal -c Release -o ${{ env.ArtifactStagingDirectory }} /p:BuildNumber=${{ env.Suffix }} /p:IsTagBuild=${{ env.IsTagBuild }}
- name: Publish Artifacts
uses: actions/upload-artifact@v4
with:
name: discord-net
path: ${{ env.ArtifactStagingDirectory }}/*

deploy:
name: Deploy
runs-on: ubuntu-latest
needs: [build]
if: github.event_name != 'pull_request'
env:
IsTagBuild: false
ArtifactStagingDirectory: "artifacts"
REPOSITORY_URL: https://nuget.pkg.github.com/${{ github.repository_owner }}/index.json
steps:
- uses: actions/checkout@v4

- name: Is Tag Build
if: startsWith(github.ref, 'refs/tags/')
run: echo "IsTagBuild=true" >> $GITHUB_ENV

- name: Generate Suffix
run: echo "Suffix=$(date +'%Y%m%d')-${{ github.run_number }}" >> $GITHUB_ENV

- name: setup NuGet
uses: nuget/setup-nuget@v2
with:
nuget-version: '6.x'

- name: Download artifacts
uses: actions/download-artifact@v4
with:
name: discord-net
path: ${{ env.ArtifactStagingDirectory }}

- name: Pack Metapackage
if: env.IsTagBuild != 'true'
run: nuget pack "src/Discord.Net/Discord.Net.nuspec" -OutputDirectory ${{ env.ArtifactStagingDirectory }} -Suffix $Suffix

- name: Pack Metapackage
if: env.IsTagBuild == 'true'
run: nuget pack "src/Discord.Net/Discord.Net.nuspec" -OutputDirectory ${{ env.ArtifactStagingDirectory }}

- name: Set API Keys
run: |
nuget setApiKey ${{ secrets.NUGET_API_KEY }} -Source https://api.nuget.org/v3/index.json
nuget setApiKey ${{ secrets.NIGHTLY_FEED_API_KEY }} -Source ${{ vars.NIGHTLY_FEED }}
nuget setApiKey ${{ secrets.GITHUB_TOKEN }} -Source ${{ env.REPOSITORY_URL }}
- name: Push Nightly
if: vars.PUSH_NIGHTLY == 'true'
run: nuget push ${{ env.ArtifactStagingDirectory }}/*.nupkg -Source ${{ vars.NIGHTLY_FEED }}

- name: Push Nightly to GitHub Pacakges
if: vars.PUSH_NIGHTLY == 'true'
run: nuget push ${{ env.ArtifactStagingDirectory }}/*.nupkg -Source ${{ env.REPOSITORY_URL }}

- name: Push Release
if: env.IsTagBuild == 'true' && vars.PUSH_NUGET == 'true'
run: nuget push ${{ env.ArtifactStagingDirectory }}/*.nupkg -Source https://api.nuget.org/v3/index.json
2 changes: 2 additions & 0 deletions Discord.Net.targets
Original file line number Diff line number Diff line change
Expand Up @@ -9,6 +9,7 @@
<PackageIcon>PackageLogo.png</PackageIcon>
<RepositoryType>git</RepositoryType>
<RepositoryUrl>git://github.com/Discord-Net/Discord.Net</RepositoryUrl>
<PackageReadmeFile>NUGET_README.md</PackageReadmeFile>
</PropertyGroup>
<PropertyGroup Condition=" '$(BuildNumber)' == '' ">
<VersionSuffix Condition=" '$(VersionSuffix)' != ''">$(VersionSuffix)-dev</VersionSuffix>
Expand All @@ -25,5 +26,6 @@
</PropertyGroup>
<ItemGroup>
<None Include="../../docs/marketing/logo/PackageLogo.png" Pack="true" PackagePath=""/>
<None Include="../../NUGET_README.md" Pack="true" PackagePath=""/>
</ItemGroup>
</Project>
73 changes: 73 additions & 0 deletions NUGET_README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Discord.Net

**Discord.Net** is an unofficial .NET API Wrapper for the Discord API (https://discord.com/developers/docs/intro).

## 📄 Documentation

- https://discordnet.dev
- [Sample Projects](https://github.com/discord-net/Discord.Net/tree/dev/samples) in our repository

## Feedback

You report issues with the library by opening an issue in our [GitHub Repository](https://github.com/discord-net/Discord.Net)

If you need help with using Discord.Net check out the following:
- ask on our [Discord Support Server](https://discord.gg/dnet)
- start a thread in [GitHub Discussions](https://github.com/discord-net/Discord.Net/discussions)

## 📥 Installation

### Stable (NuGet)

Our stable builds available from NuGet through the Discord.Net metapackage:

- [Discord.Net](https://www.nuget.org/packages/Discord.Net/)

The individual components may also be installed from NuGet:

- _Webhooks_
- [Discord.Net.Webhook](https://www.nuget.org/packages/Discord.Net.Webhook/)

- _Text-Command & Interaction services._
- [Discord.Net.Commands](https://www.nuget.org/packages/Discord.Net.Commands/)
- [Discord.Net.Interactions](https://www.nuget.org/packages/Discord.Net.Interactions/)

- _Complete API coverage._
- [Discord.Net.WebSocket](https://www.nuget.org/packages/Discord.Net.WebSocket/)
- [Discord.Net.Rest](https://www.nuget.org/packages/Discord.Net.Rest/)

- _The API core. Implements only entities and barebones functionality._
- [Discord.Net.Core](https://www.nuget.org/packages/Discord.Net.Core/)

### Unstable

Nightly builds are available through our MyGet feed (`https://www.myget.org/F/discord-net/api/v3/index.json`).
These builds target the dev branch.

## 🩷 Supporting Discord.Net

Discord.Net is an MIT-licensed open source project with its development made possible entirely by volunteers.
If you'd like to support our efforts financially, please consider:

- [Contributing on Open Collective](https://opencollective.com/discordnet).

## 🛑 Known Issues

### WebSockets (Win7 and earlier)

.NET Core 1.1 does not support WebSockets on Win7 and earlier.
This issue has been fixed since the release of .NET Core 2.1.
It is recommended to target .NET Core 2.1 or above for your project if you wish to run your bot on legacy platforms;
alternatively, you may choose to install the
[Discord.Net.Providers.WS4Net](https://www.nuget.org/packages/Discord.Net.Providers.WS4Net/) package.

### TLS on .NET Framework.

Discord supports only TLS1.2+ on all their websites including the API since 07/19/2022.
.NET Framework does not support this protocol by default.
If you depend on .NET Framework, it is suggested to upgrade your project to `net6-windows`.
This framework supports most of the windows-only features introduced by fx, and resolves startup errors from the TLS protocol mismatch.

## 🗃️ Versioning Guarantees

This library generally abides by [Semantic Versioning](https://semver.org). Packages are published in `MAJOR.MINOR.PATCH` version format.
3 changes: 3 additions & 0 deletions docs/guides/voice/sending-voice.md
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,9 @@ from; typically the same directory as your csproj).

## Joining a Channel

>[!NOTE]
>`GatewayIntents.GuildVoiceStates` and `GatewayIntents.Guilds` intents are required to connect to a voice channel
Joining a channel is the first step to sending audio, and will return
an [IAudioClient] to send data with.

Expand Down
6 changes: 4 additions & 2 deletions src/Discord.Net.Commands/Discord.Net.Commands.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,12 +5,14 @@
<AssemblyName>Discord.Net.Commands</AssemblyName>
<RootNamespace>Discord.Commands</RootNamespace>
<Description>A Discord.Net extension adding support for bot commands.</Description>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net6.0;net5.0;net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">net6.0;net5.0;netstandard2.0;netstandard2.1</TargetFrameworks>
<TargetFrameworks>net6.0;net5.0;net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<WarningLevel>5</WarningLevel>
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Discord.Net.Core\Discord.Net.Core.csproj" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net4')) AND '$(MSBuildRuntimeType)' == 'Core' AND '$(OS)' != 'Windows_NT'">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="All" />
</ItemGroup>
</Project>
6 changes: 4 additions & 2 deletions src/Discord.Net.Core/Discord.Net.Core.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -5,8 +5,7 @@
<AssemblyName>Discord.Net.Core</AssemblyName>
<RootNamespace>Discord</RootNamespace>
<Description>The core components for the Discord.Net library.</Description>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net6.0;net5.0;net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">net6.0;net5.0;netstandard2.0;netstandard2.1</TargetFrameworks>
<TargetFrameworks>net6.0;net5.0;net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<WarningLevel>5</WarningLevel>
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
</PropertyGroup>
Expand All @@ -29,4 +28,7 @@
<ItemGroup Condition=" '$(TargetFramework)' != 'net461'">
<PackageReference Include="System.ValueTuple" Version="4.5.0" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net4')) AND '$(MSBuildRuntimeType)' == 'Core' AND '$(OS)' != 'Windows_NT'">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="All" />
</ItemGroup>
</Project>
6 changes: 4 additions & 2 deletions src/Discord.Net.DebugTools/Discord.Net.DebugTools.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -4,10 +4,12 @@
<AssemblyName>Discord.Net.DebugTools</AssemblyName>
<RootNamespace>Discord</RootNamespace>
<Description>A Discord.Net extension adding some helper classes for diagnosing issues.</Description>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net45;netstandard1.3</TargetFrameworks>
<TargetFramework Condition=" '$(OS)' != 'Windows_NT' ">netstandard1.3</TargetFramework>
<TargetFrameworks>net45;netstandard1.3</TargetFrameworks>
</PropertyGroup>
<ItemGroup>
<ProjectReference Include="..\Discord.Net.Core\Discord.Net.Core.csproj" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net4')) AND '$(MSBuildRuntimeType)' == 'Core' AND '$(OS)' != 'Windows_NT'">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="All" />
</ItemGroup>
</Project>
6 changes: 6 additions & 0 deletions src/Discord.Net.Interactions/Builders/ModuleClassBuilder.cs
Original file line number Diff line number Diff line change
Expand Up @@ -80,11 +80,13 @@ private static void BuildModule(ModuleBuilder builder, TypeInfo typeInfo, Intera
builder.Description = group.Description;
}
break;
#pragma warning disable CS0618 // Type or member is obsolete
case DefaultPermissionAttribute defPermission:
{
builder.DefaultPermission = defPermission.IsDefaultPermission;
}
break;
#pragma warning restore CS0618 // Type or member is obsolete
case EnabledInDmAttribute enabledInDm:
{
builder.IsEnabledInDm = enabledInDm.IsEnabled;
Expand Down Expand Up @@ -177,11 +179,13 @@ private static void BuildSlashCommand(SlashCommandBuilder builder, Func<IService
builder.RunMode = command.RunMode;
}
break;
#pragma warning disable CS0618 // Type or member is obsolete
case DefaultPermissionAttribute defaultPermission:
{
builder.DefaultPermission = defaultPermission.IsDefaultPermission;
}
break;
#pragma warning restore CS0618 // Type or member is obsolete
case EnabledInDmAttribute enabledInDm:
{
builder.IsEnabledInDm = enabledInDm.IsEnabled;
Expand Down Expand Up @@ -232,11 +236,13 @@ private static void BuildContextCommand(ContextCommandBuilder builder, Func<ISer
command.CheckMethodDefinition(methodInfo);
}
break;
#pragma warning disable CS0618 // Type or member is obsolete
case DefaultPermissionAttribute defaultPermission:
{
builder.DefaultPermission = defaultPermission.IsDefaultPermission;
}
break;
#pragma warning restore CS0618 // Type or member is obsolete
case EnabledInDmAttribute enabledInDm:
{
builder.IsEnabledInDm = enabledInDm.IsEnabled;
Expand Down
6 changes: 4 additions & 2 deletions src/Discord.Net.Interactions/Discord.Net.Interactions.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
<Import Project="../../Discord.Net.targets" />
<Import Project="../../StyleAnalyzer.targets" />
<PropertyGroup>
<TargetFrameworks Condition=" '$(OS)' == 'Windows_NT' ">net6.0;net5.0;net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<TargetFrameworks Condition=" '$(OS)' != 'Windows_NT' ">net6.0;net5.0;netstandard2.0;netstandard2.1</TargetFrameworks>
<TargetFrameworks>net6.0;net5.0;net461;netstandard2.0;netstandard2.1</TargetFrameworks>
<RootNamespace>Discord.Interactions</RootNamespace>
<AssemblyName>Discord.Net.Interactions</AssemblyName>
<Description>A Discord.Net extension adding support for Application Commands.</Description>
Expand All @@ -22,5 +21,8 @@
<PackageReference Include="System.Collections.Immutable" Version="5.0.0" />
<PackageReference Include="System.Reactive" Version="5.0.0" />
</ItemGroup>
<ItemGroup Condition="$(TargetFramework.StartsWith('net4')) AND '$(MSBuildRuntimeType)' == 'Core' AND '$(OS)' != 'Windows_NT'">
<PackageReference Include="Microsoft.NETFramework.ReferenceAssemblies" Version="1.0.3" PrivateAssets="All" />
</ItemGroup>

</Project>
Original file line number Diff line number Diff line change
Expand Up @@ -39,7 +39,9 @@ internal ContextCommandInfo(Builders.ContextCommandBuilder builder, ModuleInfo m
: base(builder, module, commandService)
{
CommandType = builder.CommandType;
#pragma warning disable CS0618 // Type or member is obsolete
DefaultPermission = builder.DefaultPermission;
#pragma warning restore CS0618 // Type or member is obsolete
IsNsfw = builder.IsNsfw;
IsEnabledInDm = builder.IsEnabledInDm;
DefaultMemberPermissions = builder.DefaultMemberPermissions;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,9 @@ public class SlashCommandInfo : CommandInfo<SlashCommandParameterInfo>, IApplica
internal SlashCommandInfo(Builders.SlashCommandBuilder builder, ModuleInfo module, InteractionService commandService) : base(builder, module, commandService)
{
Description = builder.Description;
#pragma warning disable CS0618 // Type or member is obsolete
DefaultPermission = builder.DefaultPermission;
#pragma warning restore CS0618 // Type or member is obsolete
IsEnabledInDm = builder.IsEnabledInDm;
IsNsfw = builder.IsNsfw;
DefaultMemberPermissions = builder.DefaultMemberPermissions;
Expand Down
2 changes: 2 additions & 0 deletions src/Discord.Net.Interactions/Info/ModuleInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,9 @@ internal ModuleInfo(ModuleBuilder builder, InteractionService commandService, IS
SlashGroupName = builder.SlashGroupName;
Description = builder.Description;
Parent = parent;
#pragma warning disable CS0618 // Type or member is obsolete
DefaultPermission = builder.DefaultPermission;
#pragma warning restore CS0618 // Type or member is obsolete
IsNsfw = builder.IsNsfw;
IsEnabledInDm = builder.IsEnabledInDm;
DefaultMemberPermissions = BuildDefaultMemberPermissions(builder);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -163,7 +163,9 @@ private static void ParseModuleModel(this ModuleInfo moduleInfo, List<Applicatio
{
Name = moduleInfo.SlashGroupName,
Description = moduleInfo.Description,
#pragma warning disable CS0618 // Type or member is obsolete
IsDefaultPermission = moduleInfo.DefaultPermission,
#pragma warning restore CS0618 // Type or member is obsolete
IsDMEnabled = moduleInfo.IsEnabledInDm,
IsNsfw = moduleInfo.IsNsfw,
DefaultMemberPermissions = moduleInfo.DefaultMemberPermissions
Expand Down
Loading

0 comments on commit 27df6b4

Please sign in to comment.