بله | کانال BaleBotNet
عکس پروفایل BaleBotNetB

BaleBotNet

۱۹۷ عضو
عکس پروفایل BaleBotNetB
۱۹۷ عضو

BaleBotNet

ابزار متن‌باز توسعه بازو برای بله در دات نتOpen source sdk for development bots with dotnet
ناگت:nuget.org/packages/BaleBotNet
ریپو:github.com/RavaqeMehr/BaleBotNet
گروه گفتگو:ble.ir/join/6jpNUuVFZR
ثبت سفارش، توسعه‌دهنده: @moqavem8
گام هفتم: واکنش به آپدیت بخش 2
حالا برای هر یک از این دو کامند بالا یک کلاس ساختیم:Services\Bot\Handlers\StartCommandHandler.cs

using System.Text;
using BaleBotNet;
using BaleBotNet.Methods;
using BaleBotNet.Types;

namespace MyBaleBot.Services.Bot.Handlers;

public class StartCommandHandler(BaleBotClient bot)
{
    public async Task Run(Message message)
    {
        var chatId = message.Chat.Id;
        List<Task> tasks = [bot.SendChatAction(chatId, BaleBotNet.Enums.ChatAction.Typing)];

        StringBuilder messageBuilder = new();
        messageBuilder.AppendLine($"به بازوی @{bot.Me.Username} خوش آمدید.");
        messageBuilder.AppendLine();

        foreach (var menu in BotConsts.CommandsMenu)
        {
            messageBuilder.AppendLine($"{menu.Key} | *{menu.Value}*");
        }

        tasks.Add(bot.SendMessage(chatId: chatId, text: messageBuilder.ToString()));

        await Task.WhenAll(tasks);
    }
}

Services\Bot\Handlers\WhoisCommandHandler.cs

using System.Text;
using BaleBotNet;
using BaleBotNet.Methods;
using BaleBotNet.Types;

namespace MyBaleBot.Services.Bot.Handlers;

public class WhoisCommandHandler(BaleBotClient bot)
{
    public async Task Run(Message message)
    {
        var chatId = message.Chat.Id;
        List<Task> tasks = [bot.SendChatAction(chatId, BaleBotNet.Enums.ChatAction.Typing)];

        StringBuilder messageBuilder = new();
        messageBuilder.AppendLine($"*{BotConsts.CommandsMenu[BotConsts.Commands.Whois]}*");
        messageBuilder.AppendLine();

        var user = message.Chat;

        messageBuilder.AppendLine($"نام: *{user.FirstName} {user.LastName}*");
        if (user.Username is string username)
            messageBuilder.AppendLine($"نام کاربری: *@{username}*");
        messageBuilder.AppendLine($"شناسه: *{user.Id}*");

        tasks.Add(
            bot.SendMessage(
                chatId: chatId,
                text: messageBuilder.ToString(),
                replyMarkup: ReplyKeyboard.CreateInline(
                    [
                        [
                            new()
                            {
                                Text = "کپی شناسه",
                                CopyText = new() { Text = user.Id.ToString() }
                            }
                        ]
                    ]
                )
            )
        );

        await Task.WhenAll(tasks);
    }
}

سپس متد OnMessage آپدیت هندلر خود را برای عکس‌العمل نشان دادن به کامندها بروز کردیم:

    private static async Task OnMessage(IServiceScope scope, int updateId, Message message)
    {
        Task? task = null;

        if (message.IsPrivate() && message.IsCommand(BotConsts.Commands.Start))
            task = scope.Get<StartCommandHandler>().Run(message);
        else if (message.IsCommand(BotConsts.Commands.Whois))
            task = scope.Get<WhoisCommandHandler>().Run(message);

        task ??= Task.CompletedTask;
        await task;
    }

برای رجیستر کردن این هندلرها یک اکستنشن متد جدید ایجاد کردیم تا فایل Program . cs تمیز باقی بماند و رجیسترها در جایی مستقل اتفاق بی‌افتد.
Configs\ServicesConfigs.cs

using MyBaleBot.Services.Bot.Handlers;

namespace MyBaleBot.Configs;

public static class ServicesConfigs
{
    public static void AddServices(this WebApplicationBuilder builder)
    {
        builder.Services.AddScoped<StartCommandHandler>();
        builder.Services.AddScoped<WhoisCommandHandler>();
    }
}

سپس این متد را در Program . cs صدا کردیم.

using MyBaleBot.Configs;

var builder = WebApplication.CreateBuilder(args);

builder.AddBaleBot(addLongPollingService: builder.Environment.IsDevelopment());
builder.AddServices();

var app = builder.Build();

if (app.Environment.IsDevelopment())
{
    app.StartBotLongPolling();
}
else
{
    app.MapBotWebhook();
}

app.Run();

اکنون بعد از اجرای پروژه و ارسال دستور /start شاهد واکنش بات خود خواهید بود.

فهرست آموزش@BaleBotNet | کلاینت دات‌نت بازوی بله

۱۷:۴۵