# Matnli xabarlar bilan ishlash

Matnli xabar - bu bot strukturasi uchun yaxshi interfeys va odatda ko'p foydalaniladi. Matnli xabarlarni yuborish oson, shuningdek internet tezligi pastroq bo'lgan qurilmalarda tez namoyish qilinadi.&#x20;

Birinchi foydalanuvchidan kelgan xabarlarni qaysi turga mansubligini, so'ngra xabarlar ketma-ketligiga xos holda matnlarni yuborishni ko'rib chiqamiz.

## Kelgan xabarlarni tekshirish

Xabarlarni qaysi xabar turiga tegishlik ekanligini tekshirish uchun **Telegram.Bot.Types.Enums** namespace iga mansub **MessageType** enum ma'lumotlar toifasidan foydalanishimiz mumkin. Ya'ni:

```csharp
private async void Xabar_Kelganda(object sender, MessageEventArgs e)
{
    if(e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Text)
    {
        // amallar
    }
}
```

Kelgan xabar turi matn ko'rinishida bo'lsa vazifalarni belgilashimiz mumkin.&#x20;

Yana bir e'tiborga olishimiz kerak bo'lgan jihat bor. U shundan iboratki, yuqoridagi holatda istalgan matnli xabar kelganda berilgan shart o'rinli bo'ladi. Demak, biz nafaqat kelgan xabar turi, balkim unda kelgan matnni ham tekshirishimiz zarur.

```csharp
private async void Xabar_Kelganda(object sender, MessageEventArgs e)
{
    if(e.Message.Type == Telegram.Bot.Types.Enums.MessageType.Text)
    {
        if(e.Message.Text == "/start")
        {
            // amalllar
        }
    }
}
```

Qisqacha ko'rinishda quyidagicha yozib qo'yish ham mumkin.

```csharp
private async void Xabar_Kelganda(object sender, MessageEventArgs e)
{
    if(e.Message.Text == "/start")
    {
        // amalllar
    }
}
```

Kelgan xabarni tekshirishni ko'rdik, navbat endi ularga mos holatda matnlarni yuborish. Matnli xabarlarni yuborish uchun **SendTextMessageAsync()** asinxron funksiyasidan foydalaniladi. Ushbu finksiyada quyidagicha parametrlar mavjud:

* chatId - foydalanuvchi ID si
* text - yubormoqchi bo'lgan xabar
* replyToMessageId - xabar ID si
* parseMode - matn formati
* disableNotification - ovoz bilan borishligi
* replyMarkup -  *InlineKeyboardMarkup*  yoki *ReplyKeyboardMarkup* usulida belgilash

Keling endi bir misol ko'ramiz

```csharp
private async void Xabar_Kelganda(object sender, MessageEventArgs e)
{
    if(e.Message.Text == "salom")
    {
        await client.SendTextMessageAsync(
                        chatId: e.Message.Chat.Id,
                        text: "*Assalomu alaykum*",
                        replyToMessageId: e.Message.MessageId,
                        parseMode: Telegram.Bot.Types.Enums.ParseMode.Markdown, 
                        disableNotification: true
                    );
    }
}
```

**Natija:**

<div align="left"><img src="https://2189654329-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-ML4YbrwilsjU6IyB7jd%2F-MQzj18m-LJzR6ut_Z05%2F-MR-26cQBz2Gv3_ju5f3%2Fimage.png?alt=media&#x26;token=f3ad0c7f-e7b7-4649-abec-b204e8c26cfd" alt=""></div>

Matnli xabarlarni doimo bir xil usulda taqdim etish bu foydalanuvchini zeriktiradi. Bu holatda matnni formatlangan ko'rinishlarda tadim etish, samarali yo'l hisoblanadi. Odatda 2 xil formatlash usuli mavjud:&#x20;

1. Markdown
2. HTML

Yuqorida keltirilgan misolda Markdown usulidan foydalanilgan. Formatlash usullarini [shu yerdan](https://sourceforge.net/p/telegram-bot/wiki/markdown_syntax/) olishingiz mumkin
