# 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="/files/-MR-26cQBz2Gv3_ju5f3" 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


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://docs.dot-net.uz/c-.net/telegram-bot/starter/xabar-turlari-va-xabar-yuborish/matnli-xabarlar-bilan-ishlash.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
