Cara Membuat Bot Telegram Sederhana untuk Pengingat Waktu Tidur dengan Python

3 min read 24-08-2024
Cara Membuat Bot Telegram Sederhana untuk Pengingat Waktu Tidur dengan Python

Membuat bot Telegram yang berfungsi sebagai pengingat waktu tidur merupakan proyek yang menarik dan bermanfaat. Dalam artikel ini, kita akan membahas langkah demi langkah bagaimana cara membuat bot sederhana menggunakan Python. Kita akan menggunakan python-telegram-bot sebagai library utama untuk berinteraksi dengan API Telegram.

Persiapan

1. Buat Bot Telegram

Pertama-tama, Anda harus membuat bot Telegram dan mendapatkan token API-nya. Berikut langkah-langkahnya:

  • Buka aplikasi Telegram dan cari "BotFather".
  • Mulai obrolan dengan BotFather dan ketik /newbot.
  • Ikuti instruksi untuk memberikan nama dan username untuk bot tersebut.
  • Setelah selesai, BotFather akan memberikan Anda token API. Simpan token ini dengan aman, karena kita akan membutuhkannya.

2. Instalasi Library Python

Pastikan Anda memiliki Python terinstal di sistem Anda. Kemudian, instal library python-telegram-bot dengan cara berikut:

pip install python-telegram-bot

Membuat Bot Pengingat Waktu Tidur

1. Import Library yang Diperlukan

Buat file baru bernama sleep_reminder_bot.py dan tambahkan kode berikut untuk mengimpor library yang diperlukan.

import logging
from telegram import Update
from telegram.ext import Updater, CommandHandler, CallbackContext
from datetime import datetime, timedelta
import threading

2. Mengatur Logging

Logging akan membantu kita melacak kesalahan dan aktivitas bot. Tambahkan konfigurasi logging berikut:

# Configure logging
logging.basicConfig(
    format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
    level=logging.INFO
)
logger = logging.getLogger(__name__)

3. Menyiapkan Variabel Global

Kita perlu menyiapkan beberapa variabel global untuk menyimpan informasi pengingat tidur:

user_reminders = {}

4. Membuat Fungsi untuk Menambahkan Pengingat

Selanjutnya, kita akan membuat fungsi untuk menangani perintah /setreminder yang akan menyimpan waktu pengingat pengguna.

def set_reminder(update: Update, context: CallbackContext) -> None:
    chat_id = update.effective_chat.id
    
    if context.args:
        try:
            reminder_time = context.args[0]
            hour, minute = map(int, reminder_time.split(':'))
            
            now = datetime.now()
            reminder_datetime = datetime(now.year, now.month, now.day, hour, minute)
            
            # Jika waktu pengingat sudah lewat, tambahkan satu hari
            if reminder_datetime < now:
                reminder_datetime += timedelta(days=1)
            
            user_reminders[chat_id] = reminder_datetime
            update.message.reply_text(f"Pengingat untuk tidur diset pada {reminder_datetime.strftime('%H:%M')}.")
            # Menjalankan fungsi pengingat
            threading.Thread(target=reminder_thread, args=(chat_id, reminder_datetime)).start()
        except ValueError:
            update.message.reply_text("Format waktu harus HH:MM.")
    else:
        update.message.reply_text("Silakan masukkan waktu pengingat dalam format HH:MM.")

5. Membuat Fungsi untuk Menjalankan Thread Pengingat

Setelah membuat pengingat, kita memerlukan thread terpisah yang akan mengingatkan pengguna pada waktu yang ditentukan.

def reminder_thread(chat_id, reminder_time):
    while True:
        now = datetime.now()
        if now >= reminder_time:
            # Kirim pesan pengingat
            updater.bot.send_message(chat_id, text="Waktunya tidur! Jangan lupa istirahat yang cukup.")
            break

6. Menambahkan Fungsi untuk Menangani Kesalahan

Selalu baik untuk memiliki pengelola kesalahan agar bot dapat berfungsi dengan baik.

def error(update: Update, context: CallbackContext) -> None:
    logger.warning(f'Update "{update}" caused error "{context.error}"')

7. Mengatur Updater dan CommandHandler

Sekarang, kita perlu mengatur updater dan menambahkan handler untuk perintah yang telah kita buat sebelumnya.

def main() -> None:
    # Ganti 'YOUR_TOKEN_HERE' dengan token API bot Anda
    updater = Updater("YOUR_TOKEN_HERE")
    
    # Ambil dispatcher untuk mendaftarkan handler
    dispatcher = updater.dispatcher
    
    # Daftarkan handler untuk perintah
    dispatcher.add_handler(CommandHandler("setreminder", set_reminder))
    
    # Daftarkan handler untuk menangani kesalahan
    dispatcher.add_error_handler(error)
    
    # Mulai bot
    updater.start_polling()
    
    # Jalankan bot hingga Anda menghentikannya
    updater.idle()

8. Menjalankan Bot

Setelah semuanya siap, cukup jalankan file Python Anda dengan perintah berikut:

python sleep_reminder_bot.py

Kesimpulan

Dengan mengikuti langkah-langkah di atas, Anda telah berhasil membuat bot Telegram sederhana yang dapat mengingatkan pengguna tentang waktu tidur mereka. Anda bisa mengembangkan kisaran fungsionalitas lebih lanjut, seperti menambahkan perintah untuk membatalkan pengingat, atau membuat pengingat berulang.

Proyek ini adalah contoh yang bagus tentang bagaimana menggunakan API Telegram dan Python untuk menciptakan aplikasi yang bermanfaat. Selamat mencoba dan selamat tidur yang nyenyak!