Skip to content

Commit dcec9f1

Browse files
authored
Merge pull request #17 from IPdotSetAF/3-release-nuget-package
3 release nuget package
2 parents 406a274 + 274e96f commit dcec9f1

5 files changed

Lines changed: 132 additions & 3 deletions

File tree

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
name: Build Test Pack Push Release
2+
3+
on:
4+
workflow_dispatch:
5+
inputs:
6+
release_notes:
7+
description: "Release notes"
8+
required: true
9+
version:
10+
description: "Release version (ex: 1.0.0)"
11+
required: true
12+
13+
permissions:
14+
contents: write
15+
id-token: write
16+
packages: write
17+
18+
jobs:
19+
build-test-pack-push:
20+
uses: ./.github/workflows/build-test-pack-push.yml
21+
with:
22+
release_notes: ${{ inputs.release_notes }}
23+
version: ${{ inputs.version }}
24+
secrets: inherit
25+
26+
release:
27+
runs-on: ubuntu-latest
28+
needs: [ build-test-pack-push ]
29+
steps:
30+
- name: Release
31+
uses: softprops/action-gh-release@v2
32+
with:
33+
tag_name: v${{ inputs.version }}
34+
body: |
35+
## Release Notes
36+
${{ inputs.release_notes }}
37+
prerelease: true
38+
generate_release_notes: true
Lines changed: 55 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,55 @@
1+
name: Build Test Pack Push
2+
3+
on:
4+
workflow_call:
5+
inputs:
6+
wfl_call:
7+
description: 'is called from workflow'
8+
type: boolean
9+
required: false
10+
default: true
11+
release_notes:
12+
description: 'Release notes'
13+
type: string
14+
required: true
15+
version:
16+
description: 'Release version'
17+
type: string
18+
required: true
19+
workflow_dispatch:
20+
pull_request:
21+
branches:
22+
- main
23+
24+
env:
25+
PROJECT_PATH: ./src/TgBotPlay.WebAPI
26+
UNITTEST_PATH:
27+
CONFIGURATION: Release
28+
RELEASE_NOTES: ${{ inputs.release_notes }}
29+
VERSION: ${{ inputs.version || '0.0.1'}}
30+
31+
jobs:
32+
build:
33+
34+
runs-on: ubuntu-latest
35+
36+
steps:
37+
- uses: actions/checkout@v4
38+
- name: Setup .NET Core
39+
uses: actions/setup-dotnet@v4
40+
with:
41+
dotnet-version: 8.0.x
42+
- name: Restore dependencies
43+
run: dotnet restore $PROJECT_PATH
44+
- name: Build
45+
run: dotnet build $PROJECT_PATH --no-restore --configuration $CONFIGURATION -p:Version=$VERSION "-p:ReleaseNotes=\"$RELEASE_NOTES\""
46+
# - name: Test
47+
# run: dotnet test $UNITTEST_PATH --verbosity normal --configuration $CONFIGURATION
48+
- name: Push Package to NuGet.org
49+
if: ${{ inputs.wfl_call }}
50+
run: dotnet nuget push **\*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} --skip-duplicate
51+
- name: Tag and push
52+
if: ${{ inputs.wfl_call }}
53+
run: |
54+
git tag v$VERSION
55+
git push --tags

logo/logo.jpg

38.1 KB
Loading
Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,30 @@
11
<Project Sdk="Microsoft.NET.Sdk">
22

33
<PropertyGroup>
4-
<TargetFramework>net8.0</TargetFramework>
4+
<TargetFrameworks>net9.0;net8.0;net7.0;net6.0;</TargetFrameworks>
5+
<LangVersion>12.0</LangVersion>
6+
<GeneratePackageOnBuild>true</GeneratePackageOnBuild>
7+
<PackageId>TgBotPlay.WebAPI</PackageId>
8+
<Authors>Mohammad Mahdi Nazari</Authors>
9+
<Company>IPdotSetAF</Company>
10+
<Description>A comprehensive WebAPI integration library for Telegram Bot development with support for both polling and webhook modes, health checks, and flexible configuration options.</Description>
11+
<PackageProjectUrl>https://github.com/IPdotSetAF/TgBotPlay.WebAPI</PackageProjectUrl>
12+
<RepositoryUrl>https://github.com/IPdotSetAF/TgBotPlay.WebAPI</RepositoryUrl>
13+
<RepositoryType>git</RepositoryType>
14+
<PackageLicenseExpression>LGPL-2.1-or-later</PackageLicenseExpression>
15+
<PackageTags>telegram;bot;webapi;aspnetcore;polling;webhook</PackageTags>
16+
<PackageReadmeFile>README.md</PackageReadmeFile>
17+
<PackageIcon>logo.jpg</PackageIcon>
18+
<Copyright>IPdotSetAF © 2025</Copyright>
19+
<PackageRequireLicenseAcceptance>true</PackageRequireLicenseAcceptance>
20+
<IncludeSymbols>true</IncludeSymbols>
21+
<SymbolPackageFormat>snupkg</SymbolPackageFormat>
22+
<GenerateDocumentationFile>true</GenerateDocumentationFile>
23+
<DocumentationFile>bin\$(Configuration)\$(TargetFramework)\$(PackageId).xml</DocumentationFile>
24+
<NoWarn>$(NoWarn);1591</NoWarn>
25+
</PropertyGroup>
26+
27+
<PropertyGroup>
528
<ImplicitUsings>enable</ImplicitUsings>
629
<Nullable>enable</Nullable>
730
</PropertyGroup>
@@ -10,4 +33,9 @@
1033
<PackageReference Include="Telegram.Bot.AspNetCore" Version="22.*" />
1134
</ItemGroup>
1235

36+
<ItemGroup>
37+
<None Include="../../README.md" Pack="true" PackagePath="\" />
38+
<None Include="../../logo/logo.jpg" Pack="true" PackagePath="\" />
39+
</ItemGroup>
40+
1341
</Project>

src/TgBotPlay.WebAPI/TgBotPlayExtensions.cs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,6 @@
11
using Microsoft.Extensions.DependencyInjection;
22
using Microsoft.Extensions.DependencyInjection.Extensions;
3+
using Microsoft.Extensions.Http;
34
using Microsoft.Extensions.Options;
45
using Telegram.Bot;
56
using Telegram.Bot.AspNetCore;
@@ -24,8 +25,15 @@ public static IServiceCollection AddTgBotPlay<TUpdateHandler>(this IServiceColle
2425
{
2526
var settings = services.ConfigureSettings(options);
2627

27-
services.AddHttpClient("TgBotPlayClient").RemoveAllLoggers().AddTypedClient<ITelegramBotClient>(
28-
httpClient => new TelegramBotClient(settings.Token!, httpClient));
28+
services.AddHttpClient("TgBotPlayClient")
29+
#if NET8_0_OR_GREATER
30+
.RemoveAllLoggers()
31+
#endif
32+
.AddTypedClient<ITelegramBotClient>(
33+
httpClient => new TelegramBotClient(new TelegramBotClientOptions(settings.Token!), httpClient));
34+
#if NET6_0 || NET7_0
35+
services.RemoveAll<IHttpMessageHandlerBuilderFilter>();
36+
#endif
2937

3038
services.AddScoped<TgBotPlayUpdateHandlerBase, TUpdateHandler>();
3139

0 commit comments

Comments
 (0)