code untuk bot tele
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