trainerProgramming commited on
Commit
ae85346
Β·
1 Parent(s): 8e9c6e7

Add application file

Browse files
Files changed (3) hide show
  1. Dockerfile +21 -0
  2. main.py +68 -0
  3. requirements.txt +1 -0
Dockerfile ADDED
@@ -0,0 +1,21 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Gunakan image Python 3.9 sebagai dasar
2
+ FROM python:3.9
3
+
4
+ # Buat user baru (keamanan standar Hugging Face)
5
+ RUN useradd -m -u 1000 user
6
+ USER user
7
+ ENV PATH="/home/user/.local/bin:$PATH"
8
+
9
+ # Tentukan folder kerja
10
+ WORKDIR /app
11
+
12
+ # Salin file requirements dan install library
13
+ COPY --chown=user ./requirements.txt requirements.txt
14
+ RUN pip install --no-cache-dir --upgrade -r requirements.txt
15
+
16
+ # Salin sisa file kode (main.py, dll) ke dalam container
17
+ COPY --chown=user . /app
18
+
19
+ # --- BAGIAN YANG DIPERBAIKI ---
20
+ # Jalankan main.py menggunakan python biasa, bukan uvicorn
21
+ CMD ["python", "main.py"]
main.py ADDED
@@ -0,0 +1,68 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import telebot
2
+
3
+ # --- KONFIGURASI ---
4
+ API_TOKEN = '8253566463:AAGjLA8DvyJdVEd5XfKmGPpxTSXtDLEa23M'
5
+ bot = telebot.TeleBot(API_TOKEN)
6
+
7
+ # Tempat menyimpan tugas sementara
8
+ daftar_tugas = []
9
+
10
+ # 1. MENU UTAMA (/start)
11
+ @bot.message_handler(commands=['start'])
12
+ def sapa_user(message):
13
+ bot.reply_to(message,
14
+ "Halo! Saya Bot Pencatat Tugas.\n\n"
15
+ "Silakan pilih menu di bawah ini:\n"
16
+ "1. /tambah - Masukkan tugas baru\n"
17
+ "2. /list - Lihat daftar tugas\n"
18
+ "3. /reset - Hapus semua tugas"
19
+ )
20
+
21
+ # 2. PROSES TAMBAH TUGAS (Interaktif)
22
+ @bot.message_handler(commands=['tambah'])
23
+ def tanya_tugas(message):
24
+ # Bot bertanya dulu
25
+ pertanyaan = bot.reply_to(message, "πŸ“ Silakan ketik tugas yang ingin dicatat:")
26
+
27
+ # Bot menunggu balasan user, lalu melempar ke fungsi 'simpan_tugas'
28
+ bot.register_next_step_handler(pertanyaan, simpan_tugas)
29
+
30
+ def simpan_tugas(message):
31
+ # Apapun yang diketik user di langkah ini akan dianggap sebagai tugas
32
+ tugas_baru = message.text
33
+
34
+ # Validasi sederhana (biar gak nyimpen pesan kosong)
35
+ if tugas_baru:
36
+ daftar_tugas.append(tugas_baru)
37
+ bot.reply_to(message, f"βœ… Oke! Tugas '{tugas_baru}' berhasil disimpan.\n\nKetik /list untuk melihat.")
38
+ else:
39
+ bot.reply_to(message, "⚠️ Gagal. Anda tidak memasukkan teks.")
40
+
41
+ # 3. LIHAT DAFTAR TUGAS (/list)
42
+ @bot.message_handler(commands=['list'])
43
+ def lihat_tugas(message):
44
+ if len(daftar_tugas) == 0:
45
+ bot.reply_to(message, "πŸ“‚ Daftar tugas Anda masih kosong.")
46
+ else:
47
+ respon = "πŸ“‹ **DAFTAR TUGAS KAMU:**\n"
48
+ for nomor, isi in enumerate(daftar_tugas, start=1):
49
+ respon += f"{nomor}. {isi}\n"
50
+
51
+ bot.reply_to(message, respon)
52
+
53
+ # 4. HAPUS SEMUA (/reset)
54
+ @bot.message_handler(commands=['reset'])
55
+ def hapus_semua(message):
56
+ konfirmasi = bot.reply_to(message, "⚠️ Yakin ingin menghapus SEMUA tugas? Ketik 'YA' untuk konfirmasi.")
57
+ bot.register_next_step_handler(konfirmasi, proses_hapus)
58
+
59
+ def proses_hapus(message):
60
+ if message.text.upper() == 'YA':
61
+ daftar_tugas.clear()
62
+ bot.reply_to(message, "πŸ—‘οΈ Sip! Semua tugas sudah dihapus bersih.")
63
+ else:
64
+ bot.reply_to(message, "❌ Penghapusan dibatalkan.")
65
+
66
+ # Menjalankan Bot
67
+ print("Bot sedang berjalan...")
68
+ bot.infinity_polling()
requirements.txt ADDED
@@ -0,0 +1 @@
 
 
1
+ pyTelegramBotAPI