Tentang Habré, dan bukan hanya itu, sudah banyak yang dikatakan tentang bot yang bahkan terlalu banyak. Tetapi setelah menjadi tertarik pada topik ini beberapa minggu yang lalu, saya masih tidak dapat menemukan materi normal: semua artikel baik untuk boneka sama sekali dan terbatas untuk mengirim pesan sebagai tanggapan terhadap pesan pengguna, atau tidak relevan. Ini mendorong saya untuk menulis artikel yang akan menjelaskan kepada seorang pemula seperti saya cara menulis dan meluncurkan bot yang kurang lebih bermakna (dengan kemungkinan memperluas fungsionalitas).
Bagian 1: Daftarkan bot
Bagian paling sederhana dan paling dijelaskan. Sangat singkat: Anda perlu menemukan bot
@BotFather , menulisnya
/ mulai , atau
/ newbot , mengisi bidang yang ia minta (nama bot dan nama pendek), dan mendapatkan pesan dengan token bot dan tautan ke dokumentasi. Token harus disimpan, sebaiknya dapat diandalkan, karena ini adalah satu-satunya kunci untuk mengotorisasi bot dan berinteraksi dengannya.
Bagian 2: Bersiap untuk Menulis Kode
Seperti yang telah disebutkan dalam judul, kita akan menulis bot dengan Python. Artikel ini akan menjelaskan cara bekerja dengan perpustakaan PyTelegramBotAPI (Telebot). Jika Anda tidak menginstal Python, maka pertama-tama Anda harus melakukan ini: di terminal Linux, Anda harus memasukkan
sudo apt-get install python python-pip
Jika Anda menggunakan Windows, maka Anda perlu mengunduh Python dari situs resmi.
Setelah, di terminal Linux, atau prompt perintah Windows, masukkan
pip install pytelegrambotapi
Sekarang Anda siap untuk menulis kode.
Bagian 3: Menerima pesan dan mengatakan "Halo"
Penyimpangan kecil. Telegram dapat memberi tahu bot tentang tindakan pengguna dengan dua cara: melalui respons terhadap permintaan server (Long Poll), dan melalui Webhook, ketika server Telegram sendiri mengirimkan pesan yang seseorang tulis ke bot. Metode kedua jelas terlihat lebih baik, tetapi membutuhkan alamat IP khusus, dan SSL diinstal pada server. Pada artikel ini saya ingin berbicara tentang menulis bot, tidak menyiapkan server, jadi kami akan menggunakan Long Poll.Buka editor teks favorit Anda, dan mari kita menulis kode bot!
Hal pertama yang harus dilakukan adalah mengimpor perpustakaan kami dan menghubungkan token bot:
import telebot; bot = telebot.TeleBot('% %');
Sekarang nyatakan metode untuk menerima pesan teks:
@bot.message_handler(content_types=['text']) def get_text_messages(message):
Di bagian kode ini, kami menyatakan pendengar untuk pesan teks dan metode untuk memprosesnya. Bidang content_types dapat mengambil nilai yang berbeda, dan tidak hanya satu, misalnya
@bot.message_handler(content_types=['text', 'document', 'audio'])
Akan menanggapi pesan teks, dokumen, dan audio. Rincian lebih lanjut dapat ditemukan di
dokumentasi resmi.Sekarang kami akan menambahkan sedikit fungsionalitas ke metode kami: jika pengguna menulis "Halo" kepada kami, maka kami akan mengatakan "Halo, bagaimana saya bisa membantu Anda?", Dan jika mereka menulis kepada kami perintah "/ bantuan", kami akan memberi tahu pengguna untuk menulis "Halo":
if message.text == "": bot.send_message(message.from_user.id, ", ?") elif message.text == "/help": bot.send_message(message.from_user.id, " ") else: bot.send_message(message.from_user.id, " . /help.")
Sepotong kode ini tidak memerlukan komentar, menurut saya. Sekarang kita perlu menambahkan hanya satu baris ke kode kita (di luar semua metode).
bot.polling(none_stop=True, interval=0)
Sekarang bot kami akan terus-menerus bertanya kepada server Telegram “Apakah seseorang menulis kepada saya?” Dan jika kami menulis ke bot kami, Telegram akan mengirimkannya pesan kami. Kami menyimpan seluruh file, dan menulis di konsol
python bot.py
Di mana bot.py adalah nama file kami.
Sekarang Anda dapat menulis bot dan melihat hasilnya:
Bagian 4: Tombol dan utas pesan
Mengirim pesan tidak diragukan lagi menyenangkan, tetapi bahkan lebih menyenangkan untuk berdialog dengan pengguna: ajukan pertanyaan kepadanya dan dapatkan jawabannya. Misalkan sekarang bot kita akan menanyakan nama, nama keluarga, dan umur pengguna. Untuk ini kita akan menggunakan metode register_next_step_handler bot:
name = ''; surname = ''; age = 0; @bot.message_handler(content_types=['text']) def start(message): if message.text == '/reg': bot.send_message(message.from_user.id, " ?"); bot.register_next_step_handler(message, get_name);
Jadi, kami mencatat data pengguna. Contoh ini menunjukkan contoh yang sangat sederhana, untuk kebaikan, Anda perlu menyimpan data perantara dan status pengguna dalam basis data, tetapi hari ini kami bekerja dengan bot dan bukan dengan basis data. Sentuhan terakhir - kami meminta pengguna untuk mengonfirmasi bahwa semuanya dimasukkan dengan benar, tetapi tidak hanya seperti itu, tetapi dengan tombol! Untuk melakukan ini, edit sedikit kode metode get_age
def get_age(message): global age; while age == 0:
Dan sekarang bot kami mengirimkan keyboard, tetapi jika Anda mengkliknya, maka tidak ada yang terjadi. Karena kami tidak menulis metode penanganan. Mari menulis:
@bot.callback_query_handler(func=lambda call: True) def callback_worker(call): if call.data == "yes": #call.data callback_data, .... # , bot.send_message(call.message.chat.id, ' : )'); elif call.data == "no": ... #
Tetap hanya menambahkan satu baris ke awal file:
from telebot import types
Itu saja, simpan dan jalankan bot kami: