trainerProgramming commited on
Commit Β·
ae85346
1
Parent(s): 8e9c6e7
Add application file
Browse files- Dockerfile +21 -0
- main.py +68 -0
- 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
|