Mohammad.Bale.Bot.Client 1.0.5

Suggested Alternatives

Bale.Bot.Client.Mr.Arbab

Additional Details

use Bale.Bot.Client.Mr.Arbab
asp.net core 10 supported

dotnet add package Mohammad.Bale.Bot.Client --version 1.0.5
                    
NuGet\Install-Package Mohammad.Bale.Bot.Client -Version 1.0.5
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="Mohammad.Bale.Bot.Client" Version="1.0.5" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="Mohammad.Bale.Bot.Client" Version="1.0.5" />
                    
Directory.Packages.props
<PackageReference Include="Mohammad.Bale.Bot.Client" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add Mohammad.Bale.Bot.Client --version 1.0.5
                    
#r "nuget: Mohammad.Bale.Bot.Client, 1.0.5"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package Mohammad.Bale.Bot.Client@1.0.5
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=Mohammad.Bale.Bot.Client&version=1.0.5
                    
Install as a Cake Addin
#tool nuget:?package=Mohammad.Bale.Bot.Client&version=1.0.5
                    
Install as a Cake Tool

Mohammad.Bale.Bot.Client

لینک گیت‌هاب: https://github.com/mamadgit1376/Bale.API.Client

یک کلاینت دات‌نت ساده، مدرن و قدرتمند برای کار با API بازوی پیام‌رسان بله. این کتابخانه به شما اجازه می‌دهد تا به راحتی با متدها و مدل‌های کاملاً تایپ‌شده (Strongly-typed) با سرورهای بله تعامل داشته باشید.

🚀 ویژگی‌ها

  • کاملاً غیرهمزمان (Async): تمام متدها به صورت async/await پیاده‌سازی شده‌اند.
  • پشتیبانی از چند ربات: با استفاده از الگوی Factory، می‌توانید به سادگی کلاینت‌هایی برای ربات‌های مختلف با توکن‌های متفاوت ایجاد کنید.
  • مدل‌های Strongly-Typed: تمام آبجکت‌های API (مانند Message, Update, Chat) به صورت کلاس‌های C# مدل‌سازی شده‌اند.
  • راه‌اندازی آسان: با استفاده از یک متد کمکی (Extension Method) به راحتی در سیستم تزریق وابستگی (Dependency Injection) ثبت می‌شود.
  • مدیریت بهینه HttpClient: با بهره‌گیری از IHttpClientFactory برای مدیریت بهینه ارتباطات.
  • مدیریت خطای ساختاریافته: پرتاب استثنای سفارشی BaleApiException در صورت بروز خطا از سمت API بله.

🔧 نصب

شما می‌توانید این پکیج را از طریق NuGet Gallery به پروژه خود اضافه کنید.

از طریق .NET CLI:

dotnet add package Mohammad.Bale.Bot.Client

از طریق Package Manager Console:

Install-Package Mohammad.Bale.Bot.Client

🏁 شروع سریع

این کتابخانه برای سناریوهایی طراحی شده که شما نیاز به مدیریت چندین ربات با توکن‌های مختلف دارید.

۱. ثبت سرویس در Program.cs

ابتدا، فکتوری کلاینت را در Program.cs ثبت کنید. این فکتوری به شما اجازه می‌دهد در هر جای برنامه، یک کلاینت جدید برای یک ربات خاص بسازید.

using Bale.API.Client.Factories; // using مربوط به فکتوری
using Bale.API.Client.Interfaces; // using مربوط به اینترفیس‌ها

var builder = WebApplication.CreateBuilder(args);

// ... سایر سرویس‌ها

// ۱. ثبت IHttpClientFactory به صورت عمومی
builder.Services.AddHttpClient();

// ۲. ثبت فکتوری ربات بله به صورت Singleton
builder.Services.AddSingleton<IBaleBotClientFactory, BaleBotClientFactory>();

var app = builder.Build();

// ...

۲. استفاده در کنترلر (با دریافت توکن از کاربر)

حالا می‌توانید IBaleBotClientFactory را به کنترلر یا سرویس خود تزریق کرده، توکن ربات را از ورودی (مثلاً هدر درخواست) دریافت کنید و یک کلاینت مخصوص همان ربات بسازید.

using Bale.API.Client.Interfaces;
using Bale.API.Client.Models;
using Bale.API.Client.Factories;
using Bale.API.Client.Exceptions;
using Microsoft.AspNetCore.Mvc;

[ApiController]
[Route("api/bot")]
public class BotController : ControllerBase
{
    private readonly IBaleBotClientFactory _baleBotFactory;

    public BotController(IBaleBotClientFactory baleBotFactory)
    {
        _baleBotFactory = baleBotFactory;
    }

    /// <summary>
    /// اطلاعات یک ربات را با استفاده از توکن دریافتی از هدر، استعلام می‌کند.
    /// </summary>
    [HttpGet("getMe")]
    public async Task<IActionResult> GetBotInfo([FromHeader(Name = "X-Bot-Token")] string botToken)
    {
        if (string.IsNullOrEmpty(botToken))
        {
            return BadRequest("توکن ربات در هدر 'X-Bot-Token' ارسال نشده است.");
        }

        try
        {
            // ۱. ساخت کلاینت با توکن کاربر
            IBaleBotClient botClient = _baleBotFactory.CreateClient(botToken);

            // ۲. استفاده از کلاینت ساخته‌شده
            var response = await botClient.GetMeAsync();
            
            if (response.Ok)
            {
                return Ok(response.Result);
            }
            return BadRequest(response.Description);
        }
        catch (BaleApiException ex)
        {
            return StatusCode((int)ex.StatusCode, new { Error = ex.Message, Details = ex.ErrorContent });
        }
    }

    /// <summary>
    /// یک پیام "سلام دنیا" به چت مشخص شده ارسال می‌کند.
    /// </summary>
    [HttpPost("sendMessage")]
    public async Task<IActionResult> SendHelloMessage(
        [FromHeader(Name = "X-Bot-Token")] string botToken,
        [FromQuery] string chatId)
    {
        try
        {
            IBaleBotClient botClient = _baleBotFactory.CreateClient(botToken);
            var response = await botClient.SendMessageAsync(chatId, "سلام دنیا از طرف ربات!");

            if (response.Ok)
            {
                return Ok(response.Result);
            }
            return BadRequest(response.Description);
        }
        catch (BaleApiException ex)
        {
            return StatusCode((int)ex.StatusCode, new { Error = ex.Message, Details = ex.ErrorContent });
        }
    }
}

🤝 مشارکت

از هرگونه مشارکت در این پروژه استقبال می‌شود. لطفاً برای گزارش باگ یا ارائه پیشنهاد، یک Issue جدید در مخزن گیت‌هاب پروژه ثبت کنید.

📄 لایسنس

این پروژه تحت لایسنس MIT منتشر شده است.

Product Compatible and additional computed target framework versions.
.NET net9.0 is compatible.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.0.5 501 10/12/2025 1.0.5 is deprecated.
1.0.4 370 10/12/2025 1.0.4 is deprecated.
1.0.3 375 10/12/2025 1.0.3 is deprecated.
1.0.2 370 10/12/2025 1.0.2 is deprecated.
1.0.1 370 10/12/2025 1.0.1 is deprecated.
1.0.0 333 10/11/2025 1.0.0 is deprecated.