Matnlarni formatlash
Telegram bot orqali foydalanuvchilarga jo’natilayotgan xabarlarni formatlab jo’natish imkoniyati mavjud bo’lib, textlarni ajralib turadigan va chiroyliroq qilib jo’natish imkonini beradi.
Ushbu formatlash bizga botimiz orqali foydalanuvchilarga bold, italic, underline, strikethrough, code
, url va spoiler(ustiga bosilmagunigacha ko’rinmaydigan) ko’rinishidagi matnlarni jo’nata olamiz.
Formatlash uchun 3xil format mavjud: HTML, Markdown va MarkdownV2. Bulardan asosan foydalanadiganlar HTML va Markdown2 hisoblanadi. Shuning uchun biz siz bilan shu ikki usulda matnlarni formatlab jo’natishni ko’rib chiqamiz.
Quyidagi kodni birinchi bo’limda yozgan kodimizga /start
buyurg’ini “ushlab” olish uchun yozilgan handler’dan kegin qo’shib olamiz:
E’tibor bergan bo’lsangiz biz answer()
funksiyasiga faqatgina text argumentini emas,balki parse_mode
argumentini ham qo’shdik,ushbu argument orqali biz Telegram’ga matnimizni qaysi formatda formatlash kerakligini ko’rsatamiz.
@dp.message_handler(commands=['format'])
async def formating(message: types.Message):
# HTML
await message.answer(
text="<b>Black</b>, <i>italic</i>, <u>underline</u>, <s>strikethrough</s>, <a href='https://example.com'>link</a>, <tg-spoiler>spoiler</tg-spoiler>\n\nHTML",
parse_mode='HTML',
)
# MarkdownV2
await message.answer(
text="*Black*, _italic_, __underline__, ~strikethrough~, [link](https://example.com), ||spoiler||\n\nMarkdownV2",
parse_mode='MarkdownV2')
PythonKeling endi kodimizni ishga tushirib, botimizni sinab ko’ramiz:
To’liq kod: havola
Matnlarni formatlash bo’yicha to’liqroq quyidagi havola orqali tanishib chiqishingiz mumkin: havola.
Aiogramning Bot
classida parse_mode
argumenti bo’lib, ushbu argument orqali biz oson qaysi format turida formatlash kerakligini bera olamiz, masalan:
bot = Bot("BOT_TOKEN",parse_mode=types.ParseMode.HTML)
PythonMedia fayllar
Telegram Bot orqali nafaqat matnlar bilan ishlash, shu bilan bir qatorda rasmlar, giflar, videolar, audiolar, stickerlar, geolokatsiyalar va hokazolar bilan ishlash mumkin. Barcha media fayllar o’zining file_id
va file_unique_id
siga ega. file_id
bitta mediafaylni ko’p martta tezkor yuborish uchun foydalanilishi mumkin.
Tezkor yuborish mumkinligining sababi ushbu fayl allaqachon Telegram serverlarida mavjudligidur. Botlarda media fayllarni yuborish uchun ushbu usuldan foydalanish tavsiya etiladi. Masalan, quyidagi kod foydalanuvchidan kelgan animatsiya’ni o’ziga bir zumda file_id
si orqali qaytaradi:
# Foydalanuvchidan kelayotgan sticker'ni "ushlab" olish uchun handler
@dp.message_handler(content_types=['sticker'])
async def return_anim(message: types.Message):
# Foydalanuvchi jo'natgan stickerga javoban jo'natilgan stickerni qaytaradi
await message.reply_sticker(message.sticker.file_id)
Pythonfile_id
har bir Telegram Bot uchun unikal bo’ladi, yani bitta bot orqali olinganfile_id
boshqa bot uchun ishlamaydi.file_unique_id
esa biror bir media fayl uchun boshqa botlarda ham o’zgarmas identifikator hisoblanadi,file_unique_id
orqali mediafayllarni jo’natib bo’lmaydi.
Aiogramda foydalanuvchidan kelgan media fayllar va fayllarni yuklash uchun download()
funksiyasi mavjud,namuna uchun kod:
# Foydalanuvchidan kelgan faylni "ushlab" olish uchun handler
@dp.message_handler(content_types=['document'])
async def down_doc(message: types.Message):
# Bot ishga tushirilgan direktoriyaga faylni yuklaydi
await message.document.download()
await message.reply("✅ Fayl muvaffaqiyatli yuklandi!")
# Foydalanuvchidan kelgan rasmni "ushlab" olish uchun handler
@dp.message_handler(content_types=["photo"])
async def down_photo(message: types.Message):
# Bot ishga tushirilgan diroktoriyadagi images nomli papkaga rasmni yuklaydi.
await message.photo[-1].download()
await message.reply("✅ Rasm muvaffaqiyatli yuklandi!")
PythonE’tibor bergan bo’lsangiz biz rasmni yuklashdamessage.photo[-1]
qildik. Buning sababi foydalanuvchi botga rasm yuborganida Telegram bizga bittaphoto
obyektida foydalanuvchi jo’natgan rasmnining har-xil sifatdagisini yuboradi, eng oxirgisi eng sifatlisi hisoblanadi, shuning uchun biz eng oxirgi elementni, yani eng sifatli rasmningfile_id
sini[-1]
orqali olamiz va yuklaymiz.
Keyingi qism: Tugmalar bilan ishlash(2-dars).
Eng ko’p o’qilgan maqolalar