From 12a2ab8981e4dbbd263aeb1c3ec20cf18abfed6f Mon Sep 17 00:00:00 2001 From: IPdotSetAF Date: Sat, 13 Sep 2025 16:38:20 +0330 Subject: [PATCH 1/5] updated csproj added workflows --- .../build-test-pack-push-release.yml | 27 ++++++++++++++++ .github/workflows/build-test-pack-push.yml | 30 ++++++++++++++++++ src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj | 31 ++++++++++++++++++- 3 files changed, 87 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/build-test-pack-push-release.yml create mode 100644 .github/workflows/build-test-pack-push.yml diff --git a/.github/workflows/build-test-pack-push-release.yml b/.github/workflows/build-test-pack-push-release.yml new file mode 100644 index 0000000..9c1050f --- /dev/null +++ b/.github/workflows/build-test-pack-push-release.yml @@ -0,0 +1,27 @@ +name: Build Test Pack Push Release + +on: + push: + tags: + - "v*" + +permissions: + contents: write + id-token: write + packages: write + +jobs: + build-test-pack-push: + uses: ./.github/workflows/build-test-pack-push.yml + if: github.ref_type == 'tag' + + push-release: + runs-on: ubuntu-latest + needs: [ build-test-pack-push ] + if: github.ref_type == 'tag' + steps: + - name: Release + uses: softprops/action-gh-release@v2 + with: + prerelease: true + generate_release_notes: true \ No newline at end of file diff --git a/.github/workflows/build-test-pack-push.yml b/.github/workflows/build-test-pack-push.yml new file mode 100644 index 0000000..14a7319 --- /dev/null +++ b/.github/workflows/build-test-pack-push.yml @@ -0,0 +1,30 @@ +name: Build Test Pack Push + +on: + workflow_call: + workflow_dispatch: + pull_request: + branches: + - main + +jobs: + build: + + runs-on: ubuntu-latest + + steps: + - uses: actions/checkout@v4 + - name: Setup .NET Core + uses: actions/setup-dotnet@v4 + with: + dotnet-version: 8.0.x + - name: Restore dependencies + run: dotnet restore ./src/TgBotPlay.WebAPI + - name: Build + run: dotnet build --no-restore ./src/TgBotPlay.WebAPI --configuration Release + - name: Test + run: dotnet test --no-build --verbosity normal ./src/TgBotPlay.WebAPI + - name: Push Package to NuGet.org + if: github.ref_type == 'tag' + run: dotnet nuget push **\*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate + diff --git a/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj b/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj index f4d2245..494afcc 100644 --- a/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj +++ b/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj @@ -1,7 +1,31 @@  - net8.0 + net9.0;net8.0;net7.0;net6.0; + true + TgBotPlay.WebAPI + 1.0.0 + Mohammad Mahdi Nazari + IPdotSetAF + A comprehensive WebAPI integration library for Telegram Bot development with support for both polling and webhook modes, health checks, and flexible configuration options. + https://github.com/IPdotSetAF/TgBotPlay.WebAPI + https://github.com/IPdotSetAF/TgBotPlay.WebAPI + git + LGPL-2.1 + telegram;bot;webapi;aspnetcore;polling;webhook + README.md + icon.png + Initial release of TgBotPlay.WebAPI with support for polling and webhook modes, health checks, and comprehensive configuration options. + IPdotSetAF © 2025 + true + true + snupkg + true + bin\$(Configuration)\$(TargetFramework)\$(PackageId).xml + $(NoWarn);1591 + + + enable enable @@ -10,4 +34,9 @@ + + + + + From fd95b9dfb12d1be6429d45da046e5a8eb2f9dc91 Mon Sep 17 00:00:00 2001 From: IPdotSetAF Date: Sat, 27 Sep 2025 17:58:42 +0330 Subject: [PATCH 2/5] updated workflow and csproj --- .github/workflows/build-test-pack-push.yml | 24 ++++++++++++++++---- src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj | 2 -- 2 files changed, 19 insertions(+), 7 deletions(-) diff --git a/.github/workflows/build-test-pack-push.yml b/.github/workflows/build-test-pack-push.yml index 14a7319..b62601c 100644 --- a/.github/workflows/build-test-pack-push.yml +++ b/.github/workflows/build-test-pack-push.yml @@ -2,11 +2,25 @@ name: Build Test Pack Push on: workflow_call: - workflow_dispatch: + workflow_dispatch: + inputs: + release_notes: + description: "Release notes" + required: true + version: + description: "Release version" + required: true pull_request: branches: - main +env: + PROJECT_PATH: ./src/TgBotPlay.WebAPI + UNITTEST_PATH: + CONFIGURATION: Release + RELEASE_NOTES: ${{ inputs.release_notes }} + VERSION: ${{ inputs.version }} + jobs: build: @@ -19,11 +33,11 @@ jobs: with: dotnet-version: 8.0.x - name: Restore dependencies - run: dotnet restore ./src/TgBotPlay.WebAPI + run: dotnet restore $PROJECT_PATH - name: Build - run: dotnet build --no-restore ./src/TgBotPlay.WebAPI --configuration Release - - name: Test - run: dotnet test --no-build --verbosity normal ./src/TgBotPlay.WebAPI + run: dotnet build $PROJECT_PATH --no-restore --configuration $CONFIGURATION -p:Version=$VERSION "-p:ReleaseNotes=\"$RELEASE_NOTES\"" + # - name: Test + # run: dotnet test $UNITTEST_PATH --verbosity normal --configuration $CONFIGURATION - name: Push Package to NuGet.org if: github.ref_type == 'tag' run: dotnet nuget push **\*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate diff --git a/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj b/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj index 494afcc..6501ddb 100644 --- a/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj +++ b/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj @@ -4,7 +4,6 @@ net9.0;net8.0;net7.0;net6.0; true TgBotPlay.WebAPI - 1.0.0 Mohammad Mahdi Nazari IPdotSetAF A comprehensive WebAPI integration library for Telegram Bot development with support for both polling and webhook modes, health checks, and flexible configuration options. @@ -15,7 +14,6 @@ telegram;bot;webapi;aspnetcore;polling;webhook README.md icon.png - Initial release of TgBotPlay.WebAPI with support for polling and webhook modes, health checks, and comprehensive configuration options. IPdotSetAF © 2025 true true From 54ccdebe5f2703f302d3099a79859d3490b20b4f Mon Sep 17 00:00:00 2001 From: IPdotSetAF Date: Sun, 28 Sep 2025 11:57:45 +0330 Subject: [PATCH 3/5] updated workflows updated csproj --- .../build-test-pack-push-release.yml | 22 ++++++++++++++----- .github/workflows/build-test-pack-push.yml | 21 +++++++++++++----- src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj | 2 +- 3 files changed, 33 insertions(+), 12 deletions(-) diff --git a/.github/workflows/build-test-pack-push-release.yml b/.github/workflows/build-test-pack-push-release.yml index 9c1050f..0177ded 100644 --- a/.github/workflows/build-test-pack-push-release.yml +++ b/.github/workflows/build-test-pack-push-release.yml @@ -1,9 +1,14 @@ name: Build Test Pack Push Release on: - push: - tags: - - "v*" + workflow_dispatch: + inputs: + release_notes: + description: "Release notes" + required: true + version: + description: "Release version" + required: true permissions: contents: write @@ -13,15 +18,20 @@ permissions: jobs: build-test-pack-push: uses: ./.github/workflows/build-test-pack-push.yml - if: github.ref_type == 'tag' + with: + release_notes: ${{ inputs.release_notes }} + version: ${{ inputs.version }} - push-release: + release: runs-on: ubuntu-latest needs: [ build-test-pack-push ] - if: github.ref_type == 'tag' steps: - name: Release uses: softprops/action-gh-release@v2 with: + tag_name: ${{ inputs.version }} + body: | + ## Release Notes + ${{ inputs.release_notes }} prerelease: true generate_release_notes: true \ No newline at end of file diff --git a/.github/workflows/build-test-pack-push.yml b/.github/workflows/build-test-pack-push.yml index b62601c..3229568 100644 --- a/.github/workflows/build-test-pack-push.yml +++ b/.github/workflows/build-test-pack-push.yml @@ -2,14 +2,21 @@ name: Build Test Pack Push on: workflow_call: - workflow_dispatch: inputs: + wfl_call: + description: 'is called from workflow' + type: boolean + required: false + default: true release_notes: - description: "Release notes" + description: 'Release notes' + type: string required: true version: - description: "Release version" + description: 'Release version' + type: string required: true + workflow_dispatch: pull_request: branches: - main @@ -39,6 +46,10 @@ jobs: # - name: Test # run: dotnet test $UNITTEST_PATH --verbosity normal --configuration $CONFIGURATION - name: Push Package to NuGet.org - if: github.ref_type == 'tag' + if: ${{ inputs.wfl_call }} run: dotnet nuget push **\*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate - + - name: Tag and push + if: ${{ inputs.wfl_call }} + run: | + git tag $VERSION + git push --tags \ No newline at end of file diff --git a/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj b/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj index 6501ddb..4a95616 100644 --- a/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj +++ b/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj @@ -13,7 +13,7 @@ LGPL-2.1 telegram;bot;webapi;aspnetcore;polling;webhook README.md - icon.png + TgBotPlay.svg IPdotSetAF © 2025 true true From 3d2023e3ece15f714795928195b4708a72c7c93c Mon Sep 17 00:00:00 2001 From: IPdotSetAF Date: Sun, 28 Sep 2025 13:53:00 +0330 Subject: [PATCH 4/5] added logo updated csproj made lib compatible with .NET6+ package builds --- logo/logo.jpg | Bin 0 -> 38978 bytes src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj | 9 +++++---- src/TgBotPlay.WebAPI/TgBotPlayExtensions.cs | 12 ++++++++++-- 3 files changed, 15 insertions(+), 6 deletions(-) create mode 100644 logo/logo.jpg diff --git a/logo/logo.jpg b/logo/logo.jpg new file mode 100644 index 0000000000000000000000000000000000000000..fa018d87218f6ab24ade36ff74b805b164fa09f9 GIT binary patch literal 38978 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 literal 0 HcmV?d00001 diff --git a/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj b/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj index 4a95616..20ffb25 100644 --- a/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj +++ b/src/TgBotPlay.WebAPI/TgBotPlay.WebAPI.csproj @@ -2,6 +2,7 @@ net9.0;net8.0;net7.0;net6.0; + 12.0 true TgBotPlay.WebAPI Mohammad Mahdi Nazari @@ -10,10 +11,10 @@ https://github.com/IPdotSetAF/TgBotPlay.WebAPI https://github.com/IPdotSetAF/TgBotPlay.WebAPI git - LGPL-2.1 + LGPL-2.1-or-later telegram;bot;webapi;aspnetcore;polling;webhook README.md - TgBotPlay.svg + logo.jpg IPdotSetAF © 2025 true true @@ -33,8 +34,8 @@ - - + + diff --git a/src/TgBotPlay.WebAPI/TgBotPlayExtensions.cs b/src/TgBotPlay.WebAPI/TgBotPlayExtensions.cs index c260e93..ae541c0 100644 --- a/src/TgBotPlay.WebAPI/TgBotPlayExtensions.cs +++ b/src/TgBotPlay.WebAPI/TgBotPlayExtensions.cs @@ -1,5 +1,6 @@ using Microsoft.Extensions.DependencyInjection; using Microsoft.Extensions.DependencyInjection.Extensions; +using Microsoft.Extensions.Http; using Microsoft.Extensions.Options; using Telegram.Bot; using Telegram.Bot.AspNetCore; @@ -24,8 +25,15 @@ public static IServiceCollection AddTgBotPlay(this IServiceColle { var settings = services.ConfigureSettings(options); - services.AddHttpClient("TgBotPlayClient").RemoveAllLoggers().AddTypedClient( - httpClient => new TelegramBotClient(settings.Token!, httpClient)); + services.AddHttpClient("TgBotPlayClient") +#if NET8_0_OR_GREATER + .RemoveAllLoggers() +#endif + .AddTypedClient( + httpClient => new TelegramBotClient(new TelegramBotClientOptions(settings.Token!), httpClient)); +#if NET6_0 || NET7_0 + services.RemoveAll(); +#endif services.AddScoped(); From 274e96ff9e38c66dbda518ea722545be2fa379db Mon Sep 17 00:00:00 2001 From: IPdotSetAF Date: Sun, 28 Sep 2025 15:22:38 +0330 Subject: [PATCH 5/5] updated workflows --- .github/workflows/build-test-pack-push-release.yml | 5 +++-- .github/workflows/build-test-pack-push.yml | 6 +++--- 2 files changed, 6 insertions(+), 5 deletions(-) diff --git a/.github/workflows/build-test-pack-push-release.yml b/.github/workflows/build-test-pack-push-release.yml index 0177ded..d5febb1 100644 --- a/.github/workflows/build-test-pack-push-release.yml +++ b/.github/workflows/build-test-pack-push-release.yml @@ -7,7 +7,7 @@ on: description: "Release notes" required: true version: - description: "Release version" + description: "Release version (ex: 1.0.0)" required: true permissions: @@ -21,6 +21,7 @@ jobs: with: release_notes: ${{ inputs.release_notes }} version: ${{ inputs.version }} + secrets: inherit release: runs-on: ubuntu-latest @@ -29,7 +30,7 @@ jobs: - name: Release uses: softprops/action-gh-release@v2 with: - tag_name: ${{ inputs.version }} + tag_name: v${{ inputs.version }} body: | ## Release Notes ${{ inputs.release_notes }} diff --git a/.github/workflows/build-test-pack-push.yml b/.github/workflows/build-test-pack-push.yml index 3229568..a6399c7 100644 --- a/.github/workflows/build-test-pack-push.yml +++ b/.github/workflows/build-test-pack-push.yml @@ -26,7 +26,7 @@ env: UNITTEST_PATH: CONFIGURATION: Release RELEASE_NOTES: ${{ inputs.release_notes }} - VERSION: ${{ inputs.version }} + VERSION: ${{ inputs.version || '0.0.1'}} jobs: build: @@ -47,9 +47,9 @@ jobs: # run: dotnet test $UNITTEST_PATH --verbosity normal --configuration $CONFIGURATION - name: Push Package to NuGet.org if: ${{ inputs.wfl_call }} - run: dotnet nuget push **\*.nupkg -k ${{ secrets.NUGET_API_KEY }} -s https://api.nuget.org/v3/index.json --skip-duplicate + run: dotnet nuget push **\*.nupkg --source https://api.nuget.org/v3/index.json --api-key ${{ secrets.NUGET_API_KEY }} --skip-duplicate - name: Tag and push if: ${{ inputs.wfl_call }} run: | - git tag $VERSION + git tag v$VERSION git push --tags \ No newline at end of file