Membuat Bot Telegram Notifikasi Cuaca dengan Python (Langkah demi Langkah)
PyCoding-ID - Sering nggak sih, kalian sudah siap berangkat beraktivitas, eh, tiba-tiba di jalan malah kehujanan? Saya sering banget mengalaminya. Penyebabnya sepele: malas membuka aplikasi ramalan cuaca sebelum pergi. Rasanya kok butuh beberapa langkah ekstra untuk sekadar tahu cuaca hari ini.
Karena rasa malas itulah, saya jadi berpikir: "Kenapa nggak bikin sistem notifikasi sendiri aja, ya?". Sebuah bot sederhana di Telegram, aplikasi yang toh setiap hari saya buka, pasti akan sangat praktis.
Nah, sobat PythonCode ID di artikel kali ini, saya mau ajak kalian untuk membangun solusi dari masalah tersebut! Kita akan membuat bot Telegram fungsional menggunakan Python yang bisa memberikan informasi cuaca real-time untuk kota mana pun yang kita mau.
Di akhir tutorial ini, Anda akan punya bot pribadi yang siap sedia 24/7. Asyik, kan? Yuk, kita mulai
![]() |
PythonCodeID | Membuat Bot Telegram Notifikasi Cuaca dengan Python |
Persiapan Amunisi Sebelum "Perang Koding"
Sebelum kita masuk ke bagian inti, pastikan Anda sudah menyiapkan beberapa hal ini ya:
- Akun Telegram: Tentu saja, ini adalah "rumah" untuk bot kita nanti.
- Pengetahuan Dasar Python: Anda sudah paham variabel, fungsi, dan logika
if-else
. - Python 3 Terinstal: Pastikan Python sudah terpasang di komputer Anda.
- Code Editor Favorit: Saya pakai VS Code, tapi Anda bebas pakai apa saja (Sublime Text, Atom, dll).
- Koneksi Internet: Untuk mengunduh library dan terhubung ke API.
Dua "bahan rahasia" yang akan kita dapatkan nanti adalah:
- API Token dari BotFather Telegram.
- API Key dari OpenWeatherMap.
Tenang, keduanya gratis dan saya akan pandu cara mendapatkannya.
Langkah 1: "Lapor Diri" ke @BotFather untuk Dapat Token
Setiap bot di Telegram harus didaftarkan dulu ke "bapaknya para bot", yaitu @BotFather. Dia adalah bot resmi dari Telegram untuk mengelola semua bot.
- Buka aplikasi Telegram Anda, cari @BotFather (pastikan ada centang birunya), lalu mulai percakapan.
- Ketik dan kirim perintah
/newbot
. - BotFather akan meminta nama untuk bot Anda. Nama ini bebas dan boleh ada spasinya. Contoh:
Bot Cuaca Pribadi
. - Selanjutnya, BotFather akan meminta username untuk bot Anda. Username ini harus unik dan diakhiri dengan kata
bot
. Contoh:CuacaPribadiBot
atauInfoCuacaSuperBot
. - Jika berhasil, BotFather akan memberikan Anda sebuah API Token. Bentuknya seperti ini:
1234567890:ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghi
.
PENTING: Token ini SANGAT RAHASIA! Anggap saja ini adalah password ke bot Anda. Jangan pernah bagikan token ini ke siapa pun atau menaruhnya di kode yang bersifat publik. Simpan baik-baik di tempat yang aman.
PythonCodeID | Membuat Bot Telegram Notifikasi Cuaca dengan Python |
Langkah 2: Mendapatkan Kunci API Cuaca dari OpenWeatherMap
Bot kita butuh data cuaca dari sumber yang tepercaya. Kita akan menggunakan OpenWeatherMap, salah satu penyedia data cuaca yang populer dan menyediakan akses API gratis.
- Buka situs https://openweathermap.org/ di browser Anda.
- Klik "Sign in" lalu buat akun baru. Prosesnya standar seperti mendaftar di situs lain.
- Setelah berhasil login, klik nama akun Anda di pojok kanan atas, lalu pilih "My API keys".
- Anda akan melihat sebuah API Key default yang sudah dibuatkan. Salin key tersebut.
Sama seperti token bot, API Key ini juga rahasia, ya
Langkah 3: Saatnya Menulis Kode!
Oke, semua amunisi sudah lengkap. Sekarang kita masuk ke bagian paling seru: coding. Buka code editor Anda dan buat file baru bernama bot_cuaca.py
.
A. Instalasi Library
Pertama, kita butuh dua library Python: python-telegram-bot
untuk berinteraksi dengan API Telegram, dan requests
untuk mengambil data dari API cuaca.
Buka terminal atau Command Prompt Anda, lalu ketik perintah ini:
pip install python-telegram-bot==13.7 requests
B. Struktur Kode Lengkap
Salin dan tempel seluruh kode di bawah ini ke dalam file bot_cuaca.py
Anda. Jangan lupa ganti TOKEN_BOT_ANDA
dan API_KEY_CUACA_ANDA
dengan token dan key yang sudah Anda dapatkan tadi.
import requestsfrom telegram.ext import Updater, CommandHandler, MessageHandler, Filters# Ganti dengan Token Bot dan API Key AndaTELEGRAM_TOKEN = "xxx"WEATHER_API_KEY = "xxx"# Fungsi untuk menangani perintah /startdef start(update, context):"""Mengirim pesan sapaan saat bot dimulai."""user = update.effective_userupdate.message.reply_html(f"Halo {user.mention_html()}!\n\nSelamat datang di Bot Cuaca. "f"Ketik /cuaca [Nama Kota] untuk mengetahui cuaca saat ini.\n\n"f"Contoh: /cuaca Jakarta")# Fungsi untuk mengambil data cuaca dan mengirimkannyadef get_weather(update, context):"""Mengambil data cuaca dari OpenWeatherMap dan mengirimkannya ke pengguna."""# Mengambil nama kota dari argumen yang diberikan pengguna# context.args adalah list kata setelah perintah, contoh: ['Jakarta', 'Selatan']if not context.args:update.message.reply_text("Mohon sertakan nama kota. Contoh: /cuaca London")return# Gabungkan semua argumen menjadi satu string nama kotacity = ' '.join(context.args)# URL API OpenWeatherMapurl = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid=
{WEATHER_API_KEY}&units=metric&lang=id"try:# Mengirim request ke APIresponse = requests.get(url)response.raise_for_status() # Akan error jika status code bukan 2xxdata = response.json()# Memastikan data yang diterima validif data["cod"] != 200:update.message.reply_text(f"Maaf, kota '{city}' tidak ditemukan.")return# Mengambil informasi yang relevan dari data JSONcity_name = data["name"]weather_desc = data["weather"][0]["description"].capitalize()temp = data["main"]["temp"]feels_like = data["main"]["feels_like"]humidity = data["main"]["humidity"]wind_speed = data["wind"]["speed"]# Membuat pesan balasanmessage = (f"Cuaca saat ini di *{city_name}*:\n\n"f"🌡️ Suhu: {temp}°C (Terasa seperti {feels_like}°C)\n"f"💧 Kelembaban: {humidity}%\n"f"💨 Kecepatan Angin: {wind_speed} m/s\n"f"📝 Deskripsi: {weather_desc}")# Mengirim pesan dengan format Markdownupdate.message.reply_markdown(message)except requests.exceptions.HTTPError:update.message.reply_text(f"Maaf, kota '{city}' tidak ditemukan. Cek kembali nama kota.")except Exception as e:print(e) # Untuk debugging di terminalupdate.message.reply_text("Maaf, terjadi kesalahan saat mengambil data cuaca.")def main():"""Fungsi utama untuk menjalankan bot."""# Membuat objek Updater dan memberinya token bot Anda.updater = Updater(TELEGRAM_TOKEN, use_context=True)# Mendapatkan dispatcher untuk mendaftarkan handlerdp = updater.dispatcher# Mendaftarkan command handlerdp.add_handler(CommandHandler("start", start))dp.add_handler(CommandHandler("cuaca", get_weather))# Memulai Botupdater.start_polling()print("Bot sedang berjalan...")# Jalankan bot sampai Anda menekan Ctrl-Cupdater.idle()if __name__ == '__main__':main()
![]() |
PythonCodeID | Membuat Bot Telegram Notifikasi Cuaca dengan Python |
Langkah 4: Jalankan dan Uji Coba Bot Anda!
Sekarang, simpan file bot_cuaca.py
Anda. Kembali ke terminal, pastikan Anda berada di direktori yang sama dengan file tersebut, lalu jalankan aplikasi bot cuaca Anda.
Jika tidak ada error dan Anda melihat pesan "Bot sedang berjalan...", selamat! Bot Anda sudah aktif.
Saatnya pengujian! Buka Telegram, cari bot Anda, dan coba kirim perintah:
/start
/cuaca Jakarta
/cuaca New York
Jika semua berjalan lancar, bot Anda akan membalas dengan informasi cuaca yang relevan. Keren!
Kesimpulan
Gimana, seru kan? Hanya dengan sekitar 70 baris kode Python, kita berhasil membuat sebuah aplikasi mini yang sangat berguna dan terintegrasi dengan platform yang kita gunakan sehari-hari. Baca juga ulasan kami lainya : Membangun Alquran Digital dengan Python
Ini adalah contoh nyata betapa kuatnya Python untuk automasi dan membuat proyek-proyek personal yang keren. Anda sudah berhasil membangun fondasinya. Sekarang, giliran Anda untuk bereksperimen dan mengembangkannya lebih jauh.
Punya ide lain untuk bot ini atau mengalami kendala saat mengikuti tutorial? Jangan ragu untuk tinggalkan jejak di kolom komentar di bawah ini! Saya akan senang sekali membaca dan berdiskusi dengan Anda. Selamat mencoba dan selamat berkarya ampai jumpa di artikel PyCoding ID berikutnya
Selamat mencoba dan happy coding
0 Komentar