So'rovnoma, to'lov va admin¶
Bu yerdagi metodlar matn yuborishdan kamroq uchraydi, lekin hammasi typed va
hammasi ctx.bot'da turadi. O'ralmagan har narsa baribir bitta call() masofada.
So'rovnoma va quiz¶
send_poll savol va variantlar ro'yxatini oladi. Quiz uchun quiz=True qo'yib,
correct_option_id'ni belgilang; oddiy so'rovnoma uchun standartlarni qoldiring.
_ = ctx.bot.send_poll(chat_id, "Tab yoki bo'sh joy?", ["Tab", "Bo'sh joy"])
_ = ctx.bot.send_poll(
chat_id,
"Qaysi biri Mojo kalit so'zi?",
["def", "func", "method"],
quiz=True,
# variantlarga noldan boshlangan indeks
correct_option_id=0,
)
_ = ctx.bot.send_poll(
chat_id, "Tanlang", ["a", "b", "c"], allows_multiple_answers=True
)
Quiz'ga to'g'ri correct_option_id kerak; quiz=True'ni standart -1 bilan
yuborsangiz, Telegram uni 400 bilan rad etadi. So'rovnoma javoblari poll va
poll_answer yangilanishlari sifatida keladi, agar ularni allowed_updates'da
yoqsangiz.
Reaksiyalar¶
Xabarga emoji reaksiya qo'ying:
_ = ctx.bot.set_message_reaction(chat_id, msg.message_id(), "👍")
_ = ctx.bot.set_message_reaction(chat_id, msg.message_id(), "🔥", is_big=True)
To'lov va Telegram Stars¶
Telegram'da ikki to'lov yo'li bor: provayder orqali haqiqiy pul, va Telegram
Stars (XTR valyutasi, provayder token yo'q). Narxlar belgilangan summalarning
JSON massivi, valyutaning eng kichik birligida.
# Telegram Stars: valyuta XTR, provider_token bo'sh qoldiriladi
# 500 Stars
var prices = String('[{"label":"Pro tarif","amount":500}]')
_ = ctx.bot.send_invoice(
chat_id, "Pro", "Bir oylik Pro", "sub_pro", "XTR", prices
)
# Chat invoyisi o'rniga ulashsa bo'ladigan havola
var link = ctx.bot.create_invoice_link(
"Pro", "Bir oy", "sub_pro", "XTR", prices
)
To'lov jarayoni sizga ikkita query yangilanishi yuboradi. Ikkalasiga ham tez javob bering (Telegram taxminan o'n soniya beradi):
# pre_checkout_query: to'lovdan oldin tasdiqlash yoki rad etish
_ = ctx.bot.answer_pre_checkout_query(query_id, True)
_ = ctx.bot.answer_pre_checkout_query(query_id, False, "Tugab qolgan")
# shipping_query, faqat yetkazib berish manzilini so'ragan bo'lsangiz
_ = ctx.bot.answer_shipping_query(query_id, True)
Stars uchun to'lovni qaytarish va balansni o'qish mumkin:
_ = ctx.bot.refund_star_payment(user_id, charge_id)
var balance = ctx.bot.get_my_star_balance()
Chat boshqaruvi¶
Botingiz admin bo'lgan guruhlarda:
var chat = ctx.bot.get_chat(chat_id)
var count = ctx.bot.get_chat_member_count(chat_id)
# xom JSON: status, ruxsatlar
var member = ctx.bot.get_chat_member(chat_id, user_id)
_ = ctx.bot.ban_chat_member(chat_id, user_id)
_ = ctx.bot.unban_chat_member(chat_id, user_id)
_ = ctx.bot.leave_chat(chat_id)
_ = ctx.bot.pin_chat_message(chat_id, msg.message_id())
# message_id ixtiyoriy: oxirgisini yechadi
_ = ctx.bot.unpin_chat_message(chat_id)
Qo'shilishni tasdiqlaydigan guruhlar uchun:
_ = ctx.bot.approve_chat_join_request(chat_id, user_id)
_ = ctx.bot.decline_chat_join_request(chat_id, user_id)
Forum mavzulari, ular yoqilgan superguruhlarda:
var topic = ctx.bot.create_forum_topic(chat_id, "Yordam")
_ = ctx.bot.delete_forum_topic(chat_id, thread_id)
Buyruqlar menyusi¶
Telegram mijozi ko'rsatadigan slash-buyruqlar ro'yxatini ro'yxatdan o'tkazing,
shunda foydalanuvchilar / terganda buyruqlaringizni ko'radi:
var cmds = String('[{"command":"start","description":"Boshlash"},'
'{"command":"help","description":"Yordam"}]')
_ = ctx.bot.set_my_commands(cmds)
var current = ctx.bot.get_my_commands()
_ = ctx.bot.delete_my_commands()
Buyruqlarni har yangilanishda emas, boshlanishida bir marta o'rnating.