Cara Membuat Bot Telegram dengan Python
Panduan langkah demi langkah untuk menerapkan bot secara lokal yang menangani pesan pribadi dan grup
Topik hari ini adalah menyiapkan bot Anda sendiri di Telegram dan menerapkannya secara lokal melalui metode yang disebut polling. Ini berarti Anda dapat mengembangkan dan menguji bot Anda di server Anda, selama bot itu terhubung ke internet. https
tidak diperlukan untuk ini, yang memungkinkan Anda untuk memulai proyek Anda segera. Anda selalu dapat mengukur proyek Anda nanti dengan mengkonfigurasi server Anda https
dan menautkannya ke Telegram melalui webhook.
Di artikel ini, Anda akan belajar:
- Tangani berbagai jenis pesan masuk dari pengguna
- Kirim pesan langsung ke pengguna
- Tangani pesan pribadi dan grup
“… Implementasi Python yang sederhana, namun dapat diperluas untuk Telegram Bot API.”
Mari lanjutkan ke bagian pertama dan mulai memasang modul yang diperlukan.
1. Penyiapan
Pastikan Anda telah menginstal Telegram di ponsel Anda. Kami akan membuat bot kami langsung di dalam Telegram dengan berinteraksi dengan BotFather
bot. Ini adalah bot resmi yang dibuat oleh Telegram untuk memfasilitasi pembuatan bot.
Mencari BotFather
Buka Telegram di ponsel Anda dan klik tombol pencarian di kanan atas antarmuka utama. Kemudian, ketik botfather
di bilah pencarian. Anda harus melihat antarmuka pengguna berikut.
Klik pada pilihan pertama yang memiliki ikon centang biru di sampingnya. Ikon mewakili VerifiedBadge
, yang menunjukkan bot atau perusahaan atau orang terkemuka yang disetujui oleh Telegram. Anda harus melihat antarmuka pengguna berikut:
Berinteraksi dengan BotFather
Klik Start
tombol tersebut dan Anda akan melihat daftar perintah yang dapat Anda gunakan untuk berinteraksi BotFather
.
Kirim pesan berikut ke BotFather
.
/newbot
name
: Nama tampilan untuk bot Anda.username
: Pengenal unik di semua bot di telegram. Anda tidak dapat menggunakan nama yang sudah ada di sistem. Juga, harus diakhiri dengan bot post-fix. MisalnyaTetrisBot
,, atautetris_bot
.
Privasi dalam obrolan grup
Jika Anda ingin menggunakan bot di dalam grup Telegram, Anda perlu memahami cara kerja privasi di Telegram. Secara default, bot tidak akan menerima semua pesan dalam obrolan grup. Berdasarkan dokumentasi resmi, itu hanya akan menerima:
- Pesan perintah yang dimulai dengan
/
simbol garis miring (misalnya/help
). - Balasan untuk pesan yang dikirim oleh bot Anda.
- Pesan layanan (penambahan atau penghapusan orang dari grup).
- Pesan dari saluran tempat bot adalah anggotanya.
/[email protected]_bot_username
@your_bot_username check_phone_status 012345678
Anda mungkin lebih suka menggunakan konvensi lama, di mana bot hanya merespons ketika diberi tag dengan @
simbol:
@your_bot_username hello there
Untuk melakukannya, kirim pesan berikut ke BotFather
:
/mybots
Klik pada bot yang diinginkan untuk menampilkan lebih banyak opsi sebagai berikut. Lanjutkan dengan mengetuk Bot Settings
.
Anda akan melihat beberapa opsi yang terkait dengan grup. Klik pada Group Privacy
tombol tersebut.
Nonaktifkan pengaturan privasi grup dengan mengklik Turn off
tombol. Bot Anda sekarang memiliki akses ke pesan yang dikirim dalam obrolan grup. Jika bot Anda sudah ada dalam grup, perubahan baru mungkin tidak tercermin atau disebarkan. Jika Anda mengalami masalah, cukup hapus dari grup dan tambahkan kembali ke grup lagi.
Menambahkan bot ke obrolan grup
Ada beberapa cara untuk menambahkan bot ke obrolan grup. Cara termudah adalah melakukannya langsung dari Telegram. Cari bot Anda dan klik Start
tombolnya untuk memulai percakapan dengannya. Selanjutnya, klik nama bot yang terletak di bilah atas.
Anda harus melihat antarmuka berikut. Lanjutkan dengan mengklik tiga titik di kanan atas antarmuka.
Munculan akan muncul dengan opsi berikut. Ketuk Add to group
pilihan.
Pilih grup yang diinginkan dan konfirmasi penambahan. Kembali ke grup dan periksa pengaturan untuk memastikan bahwa bot Anda memiliki akses ke pesan grup.
Menginstal paket Python
Kami sudah selesai dengan pengaturan Telegram, sekarang mari instal paket Python yang diperlukan untuk tutorial ini. Sebelum itu, pastikan Anda telah membuat lingkungan virtual. Aktifkan dan jalankan perintah berikut di terminal Anda.
pip install pyTelegramBotAPI
pip show pytelegrambotapi
Setelah Anda menyelesaikan penginstalan, lanjutkan ke bagian berikutnya dan mulailah menulis kode Python.
2. Implementasi
Buat file Python baru di direktori kerja Anda. Untuk kesederhanaan, saya akan testbot.py
menamainya (memodifikasi namanya sesuai).
Mengimpor modul
Tambahkan pernyataan import berikut di bagian atas file:
import telebot
Buat TeleBot
instance baru dengan meneruskan token Telegram yang kami buat sebelumnya:
bot = telebot.TeleBot("YOUR_TOKEN_HERE")
Secara default, parse_mode
diatur ke None
, sehingga teks akan dikirim apa adanya. Jika Anda lebih suka memiliki fitur pemformatan dasar - seperti tebal, miring, dan garis bawah - Anda dapat menentukan ini saat membuat TeleBot
instance.
HTML
: Pemformatan berdasarkan HTML.MarkdownV2
: Pemformatan berdasarkan Penurunan Harga.
bot = telebot.TeleBot("YOUR_TOKEN_HERE", parse_mode="MarkdownV2")
Menangani pesan masuk
Mari buat penangan pesan baru yang mewakili sekumpulan filter untuk pesan masuk. Jika sebuah pesan lolos filter, ia akan memanggil fungsi yang didekorasi dengan pesan asli sebagai parameternya. Pada saat penulisan, ini dilengkapi dengan filter berikut:
commands
: MengembalikanTrue
ifmessage.content_type
istext
danmessage.text
: Dimulai dengan salah satu string yang ada dalam daftar yang ditentukan sebelumnya.func
: Berdasarkan hasil yang dikembalikan darilambda
fungsi tersebut.content_types
: MengembalikanTrue
jikamessage.content_type
ada dalam daftar yang ditentukan sebelumnya.regexp
: MengembalikanTrue
ifmessage.content_type
istext
danre.search(regexp_args)
isTrue
.
@bot.message_handler(commands=['start'])
def handle_command(message):
bot.reply_to(message, "Hello, welcome to Telegram Bot!")
Kemudian, panggil reply_to
fungsi yang menerima dua parameter:
- Sebuah
Message
objek yang merepresentasikan pesan. Ini berisi cukup banyak informasi sepertimessage_id
,date
,text
, dll Anda hanya dapat melewati variabel pesan masukan. - Sebuah string mewakili pesan yang dikembalikan dari bot.
@bot.message_handler(func=lambda message: True)
def handle_all_message(message):
bot.reply_to(message, message.text)
Jajak pendapat
Sekarang, mari tambahkan sentuhan terakhir ke file kita dengan kode berikut:
bot.polling()
Ini adalah fungsi pemblokiran yang berarti kode di bawahnya tidak akan dijalankan. Pastikan untuk meletakkannya di akhir file Anda. Juga, jangan menyebutnya lebih dari sekali, atau kesalahan akan terjadi. Jika Anda ingin menskalakan proyek Anda, gunakan webhook sebagai gantinya. Menjalankan beberapa server polling tidak akan berfungsi!
The polling
Fungsi menerima parameter berikut:
none_stop
: Boolean untuk menentukan apakah pemungutan suara harus berhenti saat terjadi kesalahan. Nilai defaultnya adalah False.interval
: Integer mewakili interval antara permintaan polling. Secara default, ini disetel ke 0. Menyetelnya ke nilai lain yang lebih tinggi dari 0 akan memengaruhi waktu responstimeout
: Batas waktu dalam hitungan detik untuk pemungutan suara yang lama. Nilai defaultnya adalah 20.
Menjalankan Server Anda
Pastikan terminal sekarang mengarah ke direktori kerja tempat file Python Anda berada. Pastikan mesin Anda terhubung ke internet. Jalankan perintah berikut untuk memulai polling, ubah nama sesuai kebutuhan:
python testbot.py
Membedakan Pesan Pribadi dan Grup
Anda dapat dengan mudah membedakan pesan masuk pribadi dari pesan grup dengan memeriksa message.chat.type
variabel. Opsi yang tersedia adalah sebagai berikut:
- Pribadi
- Kelompok
- Supergrup
- Saluran
@bot.message_handler(func=lambda message: True)
def handle_all_message(message):
if message.chat.type == "private":
bot.reply_to(message, message.text)
elif message.chat.type == "group":
bot.reply_to(message, "Hello to all!")
Membalas Hanya Saat Diberi Tag
Sekarang, kami memiliki masalah baru: Bot kami akan menanggapi setiap pesan dalam obrolan jika Anda telah mengaturnya menjadi admin atau telah menonaktifkan pengaturan privasi. Untuk mengatasi ini, setel kondisi lain yang membatasi balasan jika dan hanya jika bot diberi tag dalam pesan. Ganti username_of_your_bot
dengan nama pengguna yang Anda tetapkan:
@bot.message_handler(func=lambda message: True)
def handle_all_message(message):
if message.chat.type == "private":
bot.reply_to(message, message.text)
elif message.chat.type == "group":
if('@username_of_your_bot' in message.text):
bot.reply_to(message, "Hello to all!")
Untuk saat ini, bot kami hanya mampu membalas pesan teks. Ini tidak akan berfungsi dengan baik ketika pengguna mengirim file atau stiker. Anda dapat membuat penangan pesan baru dan menentukan yang diterima content_types
dalam daftar. Kode berikut menggambarkan bagaimana Anda dapat mengembalikan stiker yang sama ke pengguna:
@bot.message_handler(content_types=['sticker'])
def handle_sticker(message):
bot.send_sticker(message.chat.id, message.sticker.file_id)
Jalankan ulang server Anda dan Anda akan melihat sesuatu seperti ini ketika Anda mengirim stiker ke bot Anda:
Kesimpulan
Selamat telah menyelesaikan tutorial ini! Mari kita rekap apa yang telah kita pelajari hari ini.
Kami mulai dengan membuat bot kami di Telegram dengan berinteraksi dengannya BotFather
. Kami juga membuat lingkungan virtual baru dan menginstal pyTelegramBotAPI
paket di dalamnya.
Setelah itu, kami melanjutkan untuk membuat TeleBot
instance baru berdasarkan token yang kami peroleh sejak awal pembuatan bot. Kami menerapkan beberapa penangan pesan untuk menangani perintah dan semua pesan masuk.
Selain itu, kami juga belajar membedakan antara pesan pribadi dan pesan grup. Kami dapat dengan mudah menangani stiker dengan menentukan yang diterima content_types
di penangan pesan kami.
Sekarang, Anda harus dapat membuat bot Telegram Anda sendiri secara lokal di mesin Anda, selama itu terhubung ke internet.
Terima kasih telah membaca artikel ini - Saya berharap dapat bertemu Anda lagi di artikel berikutnya!
Referensi
- Github - pyTelegramBotAPI
- API Bot Telegram
- StackOverflow - Cara menambahkan bot ke Grup Telegram
- StackOverflow - Izinkan bot mengakses Pesan Grup Telegram