code untuk bot tele

 avatar
unknown
plain_text
5 months ago
4.4 kB
2
Indexable
from telegram import Update
from telegram.ext import ApplicationBuilder, CommandHandler, MessageHandler, filters, ContextTypes
import re

# In-memory user data store
user_data = {}

# Function to start the bot
async def start(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    await update.message.reply_text('Selamat datang! Masukkan NIM Anda untuk memulai.')

# Function to handle help command
async def help_command(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    help_text = (
        "Berikut adalah perintah yang dapat Anda gunakan:\n"
        "/start - Memulai percakapan dengan bot.\n"
        "/help - Menampilkan informasi tentang cara menggunakan bot ini.\n"
        "Masukkan NIM Anda (10 digit) untuk mengakses dan menyimpan informasi akademik.\n"
        "Format yang dapat digunakan:\n"
        "1. 'jadwal [isi_jadwal]' untuk memasukkan jadwal kuliah Anda.\n"
        "2. 'ipk [nilai_ipk]' untuk memasukkan IPK Anda.\n"
        "3. 'tampilkan data' untuk melihat informasi yang telah disimpan.\n"
    )
    await update.message.reply_text(help_text)

# Function to identify user intent
def identify_intent(user_input: str) -> str:
    user_input = user_input.lower()
    
    if re.match(r'^\d{10}$', user_input):  # Assuming NIM is a 10-digit numeric string
        return 'nim_input'
    elif user_input.startswith("jadwal"):
        return 'input_jadwal'
    elif user_input.startswith("ipk"):
        return 'input_ipk'
    elif user_input == "tampilkan data":
        return 'tampilkan_data'
    else:
        return 'unknown'

# Function to respond based on identified intent
async def respond_to_query(update: Update, context: ContextTypes.DEFAULT_TYPE) -> None:
    user_input = update.message.text
    intent = identify_intent(user_input)

    if intent == 'nim_input':
        nim = user_input.strip()
        if nim not in user_data:
            await update.message.reply_text(f"NIM {nim} tidak ditemukan. Silakan masukkan nama Anda:")
            context.user_data['current_nim'] = nim
            return
        else:
            response = f"Data untuk NIM {nim}:\n" \
                       f"Nama: {user_data[nim]['name']}\n" \
                       f"Jadwal Kuliah:\n{user_data[nim].get('jadwal', 'Belum diinput')}\n" \
                       f"IPK: {user_data[nim].get('ipk', 'Belum diinput')}"
            await update.message.reply_text(response)

    elif 'current_nim' in context.user_data:
        name = user_input.strip()
        nim = context.user_data['current_nim']
        user_data[nim] = {'name': name}
        await update.message.reply_text(f"Data untuk NIM {nim} telah dibuat. Silakan masukkan jadwal kuliah Anda:")
        del context.user_data['current_nim']
        return


    elif intent == 'input_ipk':
        if 'current_nim' in context.user_data:
            ipk = user_input.replace("ipk ", "").strip()
            nim = context.user_data['current_nim']
            user_data[nim]['ipk'] = ipk
            await update.message.reply_text(f"IPK untuk NIM {nim} telah disimpan.")
            del context.user_data['current_nim']  # Clear current NIM
            return

    elif intent == 'tampilkan_data':
        if 'current_nim' in context.user_data:
            nim = context.user_data['current_nim']
            response = f"Data untuk NIM {nim}:\n" \
                       f"Nama: {user_data[nim]['name']}\n" \
                       f"Jadwal Kuliah:\n{user_data[nim].get('jadwal', 'Belum diinput')}\n" \
                       f"IPK: {user_data[nim].get('ipk', 'Belum diinput')}"
            await update.message.reply_text(response)
            return

    else:
        await update.message.reply_text("Maaf, saya tidak mengerti pertanyaan Anda. Silakan coba lagi atau gunakan /help untuk bantuan.")

# Main function to run the bot
def main() -> None:
    application = ApplicationBuilder().token("7549195522:AAEEML7iq1OeMN5Z0jgWq1vt0sluFy1Yp34").build()  # Replace with your bot's token

    # Add command handlers
    application.add_handler(CommandHandler("start", start))
    application.add_handler(CommandHandler("help", help_command))
    application.add_handler(MessageHandler(filters.TEXT & ~filters.COMMAND, respond_to_query))

    # Start the bot
    application.run_polling()

if __name__ == '__main__':
    main()
Editor is loading...
Leave a Comment