Menulis bot telegram dengan python menggunakan perpustakaan telebot bagian 1

Perhatian, bagian kedua artikel telah diterbitkan , saya sarankan untuk membacanya



Penyimpangan liris


Bot hari ini adalah alat multifungsi, baik untuk bisnis maupun untuk hiburan. Secara pribadi, saya percaya bahwa masa depan ada pada mereka. Tentu saja, setelah membaca artikel ini, Anda tidak akan dapat membuat proyek besar, tetapi untuk mulai tertarik dan memulai sudah cukup.

Instalasi dan pengaturan


Untuk memulai, mari unduh python itu sendiri. Anda dapat melakukan ini di situs web resmi . Jangan lupa untuk memeriksa tambahkan ke PATH selama instalasi! Setelah menginstal python, kita memerlukan editor kode yang baik. JetBrains datang untuk menyelamatkan dengan PyCharm gratis. Kami sudah dekat, masih mengunduh perpustakaan telebot. Untuk melakukan ini, buka baris perintah dan tulis:

pip install pytelegrambotapi 

Jika semuanya berjalan dengan baik, kita bisa melanjutkan!

VPN


Saya pikir semua orang tahu tentang pemblokiran telegram di Rusia dan satu-satunya solusi, seperti biasa, adalah vpn. Secara pribadi, saya merekomendasikan Windscribe , sebagai mereka memberi Anda 2 GB. lalu lintas benar-benar gratis!

Ayah bot


Dalam mencari telegram, kami menemukan Bot Farher dan membuat bot kami menggunakan perintah / newbot. Lalu masukkan nama dan nama pengguna. Harap dicatat bahwa nama pengguna harus diakhiri dengan bot!

gambar

Seperti yang Anda lihat, kami diberi token api khusus yang dengannya Anda dapat mengontrol bot Anda (dalam kasus saya, itu adalah: 776550937: AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM ). Anda dapat mengingat token Anda, tetapi saya sarankan untuk menuliskannya.

Kode


Momen telah datang bahwa semua orang telah menunggu. Buka PyCharm dan buat proyek baru.

gambar

Di sini saya merekomendasikan meletakkan segala sesuatu sebagai milik saya (nama, tentu saja, dapat diubah). Setelah membuat proyek, mari buat file tempat kode kita nantinya. Klik kanan pada folder dengan proyek Anda, lalu New → Python File. Ok, mari kita mulai menulis kode. Impor perpustakaan telebot menggunakan:

 import telebot 

Sekarang Anda perlu membuat variabel bot. Sebenarnya, nama variabel bisa apa saja, tapi saya sudah terbiasa menulis bot.

 bot = telebot.TeleBot(' ') 

Kami akan menulis dekorator bot .message_handler (), yang dengannya bot kami akan menanggapi perintah / mulai. Untuk melakukan ini, kita menulis perintah = ['mulai'] dalam tanda kurung. Akibatnya, kita harus mendapatkan ini:

 @bot.message_handler(commands=['start']) 

Jika Anda mencoba meluncurkan bot Anda (RMB-> Run), maka tidak ada yang berhasil untuk Anda. Pertama, di akhir kode, kita perlu menulis bot.polling (). Ini diperlukan agar bot tidak mati segera, tetapi berfungsi dan memeriksa untuk melihat apakah ada pesan baru di server. Dan kedua, bot kami, meskipun memeriksa pesan, tetap tidak dapat menjawab apa pun. Saatnya memperbaikinya! Setelah dekorator kami, kami membuat fungsi start_message, yang akan mengambil parameter pesan (nama fungsi bisa apa saja). Selanjutnya, mari kita terapkan pengiriman pesan dari bot itu sendiri. Dalam fungsi ini, kami menulis bot.send_message (message.chat.id, 'Halo, Anda menulis saya / mulai'). Lihat apa yang harus Anda dapatkan:

 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') bot.polling() 

Mari kita periksa ...

gambar

Hebat, bot kami berfungsi! Agar dia menjawab tidak hanya perintah, tetapi juga pesan, buat bot dekorator baru .message_handler (), dan dalam tanda kurung tulis content_types = ['text']. Secara umum, ada banyak jenis konten, misalnya lokasi, foto, audio, stiker, dll. Tetapi kita perlu menanggapi teks, bukan? Oleh karena itu, kami membuat fungsi send_text yang mengambil parameter pesan. Dalam fungsi tersebut, kami menulis kondisinya:

 @bot.message_handler(content_types=['text']) def send_text(message): if message.text == '': bot.send_message(message.chat.id, ',  ') elif message.text == '': bot.send_message(message.chat.id, ', ') 

Jika teks pesan adalah "Halo", maka bot itu menjawab "Halo pencipta saya", dan jika teks pesannya adalah "Sampai jumpa", bot akan menjawab "Selamat tinggal pencipta". Di sini saya pikir semuanya jelas. Tetapi Anda kemungkinan besar bertanya-tanya, dan jika pengguna menulis "halo," atau "Hai," apa yang harus Anda lakukan dalam situasi ini? Semuanya cukup sederhana! Dalam kondisi tersebut, setelah message.text tulis fungsi .lower (), dan dalam teks ganti semua huruf besar dengan huruf kecil. Sekarang bot kami merespons tidak hanya untuk "halo", tetapi juga "PrivT", dan bahkan "PRIVET".

gambar

Inilah yang harus Anda dapatkan:

 import telebot bot = telebot.TeleBot('776550937:AAELEr0c3H6dM-9QnlDD-0Q0Fcd65pPyAiM') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start') @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') bot.polling() 

Ya, kami sudah tahu teksnya, tapi bagaimana cara mengirim stiker misalnya? Semuanya sederhana! Setiap stiker memiliki id sendiri, masing-masing, mengetahui id, kami dapat mengirimkannya. Ada dua cara untuk mendapatkan id stiker. Yang pertama (sederhana) - melalui bot khusus "Apa id stiker?"

gambar

Nah, cara kedua, bagi yang tidak mencari cara mudah. Kami membuat dekorator bot .message_handler () baru, hanya di dalam kurung kami menulis content_types = ['stiker']. Maka semuanya seperti biasa. Kami membuat fungsi yang mengambil parameter pesan, tetapi di sini kami menulis print (pesan). Kami meluncurkan bot.



Lihat, begitu saya mengirim stiker, segera ditampilkan informasi di konsol, dan pada akhirnya akan menjadi id stiker kami (file_id). Mari kita pastikan bahwa ketika pengguna mengirimkan bot "Aku mencintaimu", bot merespons dengan stiker. Tidak perlu membuat dekorator baru, kami hanya menambahkan kondisi yang sebelumnya. Tetapi alih-alih bot.send_message () kita menulis bot.send_sticker (), dan alih-alih teks kita menulis id stiker.

gambar

Selamat, semuanya berhasil! Saya sedang memikirkan cara mengirim audio, foto, dan geolokasi, Anda akan mengetahuinya sendiri. Saya ingin menunjukkan kepada Anda cara membuat keyboard yang akan ditampilkan bot kepada Anda saat startup. Ini akan membuatnya lebih sulit. Kami membuat variabel keyboard1, di mana kami menulis telebot.types.ReplyKeyboardMarkup (). Fungsi ini memanggil keyboard. Selanjutnya, buat baris, tetapi ingat bahwa tidak boleh lebih dari 12 baris! Untuk membuatnya, tulis keyboard1.row (). Dalam tanda kurung, tuliskan apa pun yang Anda inginkan, secara pribadi, saya akan menulis "Halo" dan "Sampai jumpa." Sekarang, untuk memanggil keyboard, mari kita tambahkan reply_markup = keyboard1 ke fungsi mengirim pesan saat startup. Inilah yang harus Anda dapatkan:

 keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1) 

Kami meluncurkan bot ...



Anda melihat bahwa keyboard itu agak besar. Untuk memperbaikinya, Anda hanya perlu mendaftar True di ReplyKeyboardMarkup (). Nah, jika Anda ingin keyboard bersembunyi segera setelah pengguna mengkliknya, maka tulis True lainnya. Anda dapat membaca lebih lanjut tentang apa yang dimaksud True ini dalam dokumentasi resmi .

 keyboard1 = telebot.types.ReplyKeyboardMarkup(True, True) 

Yah, itu saja! Tentu saja, ini tidak semua bot mungkin dalam telegram, tetapi saya menunjukkan kepada Anda fitur utama. Terima kasih atas perhatian anda

Kode Sumber:

 import telebot bot = telebot.TeleBot('< >') keyboard1 = telebot.types.ReplyKeyboardMarkup() keyboard1.row('', '') @bot.message_handler(commands=['start']) def start_message(message): bot.send_message(message.chat.id, ',    /start', reply_markup=keyboard1) @bot.message_handler(content_types=['text']) def send_text(message): if message.text.lower() == '': bot.send_message(message.chat.id, ',  ') elif message.text.lower() == '': bot.send_message(message.chat.id, ', ') elif message.text.lower() == '  ': bot.send_sticker(message.chat.id, 'CAADAgADZgkAAnlc4gmfCor5YbYYRAI') @bot.message_handler(content_types=['sticker']) def sticker_id(message): print(message) bot.polling() 


Jika Anda memiliki pertanyaan - Anda dapat menulis ke telegram dimagorovtsov

Source: https://habr.com/ru/post/id448310/


All Articles