Membuat Bot Telegram Notifikasi Cuaca dengan Python

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

Membuat Bot Telegram Notifikasi Cuaca dengan Python
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:

  1. API Token dari BotFather Telegram.
  2. 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.

  1. Buka aplikasi Telegram Anda, cari @BotFather (pastikan ada centang birunya), lalu mulai percakapan.
  2. Ketik dan kirim perintah /newbot.
  3. BotFather akan meminta nama untuk bot Anda. Nama ini bebas dan boleh ada spasinya. Contoh: Bot Cuaca Pribadi.
  4. Selanjutnya, BotFather akan meminta username untuk bot Anda. Username ini harus unik dan diakhiri dengan kata bot. Contoh: CuacaPribadiBot atau InfoCuacaSuperBot.
  5. 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
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.

  1. Buka situs https://openweathermap.org/ di browser Anda.
  2. Klik "Sign in" lalu buat akun baru. Prosesnya standar seperti mendaftar di situs lain.
  3. Setelah berhasil login, klik nama akun Anda di pojok kanan atas, lalu pilih "My API keys".
  4. 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 requests
from telegram.ext import Updater, CommandHandler, MessageHandler, Filters

# Ganti dengan Token Bot dan API Key Anda
TELEGRAM_TOKEN = "xxx"
WEATHER_API_KEY = "xxx"

# Fungsi untuk menangani perintah /start
def start(update, context):
"""Mengirim pesan sapaan saat bot dimulai."""
user = update.effective_user
update.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 mengirimkannya
def 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 kota
city = ' '.join(context.args)
# URL API OpenWeatherMap
url = f"http://api.openweathermap.org/data/2.5/weather?q={city}&appid=
{WEATHER_API_KEY}
&units=metric&lang=id"
try:
# Mengirim request ke API
response = requests.get(url)
response.raise_for_status() # Akan error jika status code bukan 2xx
data = response.json()

# Memastikan data yang diterima valid
if data["cod"] != 200:
update.message.reply_text(f"Maaf, kota '{city}' tidak ditemukan.")
return

# Mengambil informasi yang relevan dari data JSON
city_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 balasan
message = (
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 Markdown
update.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 terminal
update.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 handler
dp = updater.dispatcher

# Mendaftarkan command handler
dp.add_handler(CommandHandler("start", start))
dp.add_handler(CommandHandler("cuaca", get_weather))

# Memulai Bot
updater.start_polling()
print("Bot sedang berjalan...")

# Jalankan bot sampai Anda menekan Ctrl-C
updater.idle()

if __name__ == '__main__':
main()

 

PythonCodeID | Membuat Bot Telegram Notifikasi Cuaca dengan Python
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


Posting Komentar

0 Komentar