def krs_to_transkrip(data):
    try:
        data = data.split('|')
        tahun_id = find_tahun_id_from_message(message.normalize(data[3]))
        if tahun_id:
            tahun_id = tahun_id[0]
            data_npm_begin_and_npm_end = split_and_get_npm(
                message.normalize(data[3]))
            if data_npm_begin_and_npm_end:
                npm_begin, npm_end = data_npm_begin_and_npm_end
                data_mhsw_id_distinct = get_npm_distinct(
                    npm_range_begin=npm_begin,
                    npm_range_end=npm_end,
                    tahunid=tahun_id)

                data_check = [
                    data_check_krs_to_transkrip(data_mahasiswa_krs)
                    for mshw in data_mhsw_id_distinct
                    for data_mahasiswa_krs in data_student_krs(
                        mshw["MhswID"], tahun_id)
                ]

                msg_data_insert = f'Data perpindahan dari KRS to TRANSKRIP:{config.whatsapp_api_lineBreak}{config.whatsapp_api_lineBreak}'
                for data_check_loop in data_check:
                    if data_check_loop['status']:
                        msg_data_insert += f'{data_check_loop["mhswid"]} | {data_check_loop["mkkode"]}{config.whatsapp_api_lineBreak}'

                return wa.setOutbox(numbers.normalize(data[0]),
                                    msg_data_insert)
            return wa.setOutbox(numbers.normalize(data[0]),
                                'kata sampai tidak ada')
        return wa.setOutbox(numbers.normalize(data[0]), 'tidak ada tahun id')
    except Exception as e:
        return wa.setOutbox(numbers.normalize(data[0]), f'ERROR: {e}')
Exemple #2
0
def replymsg(driver, data):
    if kelas.getKodeDosen(data[0]):
        kode_dosen = kelas.getKodeDosen(data[0])
        dosen_homebase = getHomebaseDosen(kode_dosen)
        nama_file = f'jadwal_sidang_ta_{dosen_homebase}.xlsx'
        status, df = openJadwalExcel(nama_file)
        if status == False:
            msgreply = 'mohon untuk memberikan jadwal sidang dalam bentuk excel ke admin'
        else:
            if 'penguji pendamping' in message.normalize(data[3]):
                msgreply = 'ini dia jadwal sidangnya yaaa....\n\n'
                for i, j in df.iterrows():
                    if j[3] == kode_dosen:
                        msgreply += f'PENGUJI UTAMA: {kelas.getNamaDosen(j[2])}\n' \
                                    f'PENGUJI PENDAMPING: {kelas.getNamaDosen(j[3])}\n' \
                                    f'NPM MAHASISWA: {j[4]}\n' \
                                    f'NAMA MAHASISWA: {kelas.getStudentNameOnly(j[4])}\n' \
                                    f'JADWAL SIDANG: {j[5]}\n' \
                                    f'JAM SIDANG: {j[6]}\n\n'
            elif 'penguji utama' in message.normalize(data[3]):
                msgreply = 'ini dia jadwal sidangnya yaaa....\n\n'
                for i, j in df.iterrows():
                    if j[2] == kode_dosen:
                        msgreply += f'PENGUJI UTAMA: {kelas.getNamaDosen(j[2])}\n' \
                                    f'PENGUJI PENDAMPING: {kelas.getNamaDosen(j[3])}\n' \
                                    f'NPM MAHASISWA: {j[4]}\n' \
                                    f'NAMA MAHASISWA: {kelas.getStudentNameOnly(j[4])}\n' \
                                    f'JADWAL SIDANG: {j[5]}\n' \
                                    f'JAM SIDANG: {j[6]}\n\n'
            else:
                msgreply = 'ini dia jadwal sidangnya yaaa....\n\n'
                for i, j in df.iterrows():
                    if j[2] == kode_dosen or j[3] == kode_dosen:
                        msgreply+=f'PENGUJI UTAMA: {kelas.getNamaDosen(j[2])}\n' \
                                  f'PENGUJI PENDAMPING: {kelas.getNamaDosen(j[3])}\n' \
                                  f'NPM MAHASISWA: {j[4]}\n' \
                                  f'NAMA MAHASISWA: {kelas.getStudentNameOnly(j[4])}\n' \
                                  f'JADWAL SIDANG: {j[5]}\n' \
                                  f'JAM SIDANG: {j[6]}\n\n'
    else:
        mahasiswa_homebase = kelas.getProdiIDwithStudentID(
            kelas.getNpmandNameMahasiswa(data[0])[0])
        nama_file = f'jadwal_sidang_ta_{mahasiswa_homebase}.xlsx'
        status, df = openJadwalExcel(nama_file)
        if status == False:
            msgreply = 'mohon untuk memberikan jadwal sidang dalam bentuk excel ke admin'
        else:
            msgreply = 'ini dia jadwal sidangnya yaaa....\n\n'
            for i, j in df.iterrows():
                if str(j[4]) == str(kelas.getNpmandNameMahasiswa(data[0])[0]):
                    msgreply += f'PENGUJI UTAMA: {kelas.getNamaDosen(j[2])}\n' \
                                f'PENGUJI PENDAMPING: {kelas.getNamaDosen(j[3])}\n' \
                                f'NPM MAHASISWA: {j[4]}\n' \
                                f'NAMA MAHASISWA: {kelas.getStudentNameOnly(j[4])}\n' \
                                f'JADWAL SIDANG: {j[5]}\n' \
                                f'JAM SIDANG: {j[6]}\n\n'
    return msgreply
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wmsg = wmsg.replace('#BOTNAME#', config.bot_name)
    wa.typeAndSendMessage(driver, wmsg)
    num = numbers.normalize(data[0])
    msg = message.normalize(data[3])
    npm = msg.split(' ')[-1]
    kodedosen = kelas.getKodeDosen(num)
    if npm == "all":
        msgreply = 'ok sudah di approve semua berkas KAMBING-nya sama #BOTNAME# yyyyaaa'
        sudah, siap, belum = bimbinganCekApprovalBimbingan(kodedosen)
        if siap == []:
            msgreply = 'yah datanya belum ada lagi nih yang siap untuk di approve, coba deh cek dengan cara ketik #BOTNAME# cek approval kambing'
        else:
            for j in siap:
                pembimbing_ke = pembimbingPositionAs(
                    getDataPembimbing(j, kodedosen), kodedosen)
                setSingleApprovalBimbingan(j, kodedosen, pembimbing_ke, 'true')
                nama_mahasiswa = kelas.getStudentNameOnly(j)
                msgreply += f'\n\nNPM: {j}\nNama: {nama_mahasiswa}'
    else:
        data = getDataPembimbing(npm, kodedosen)
        if data == None:
            msgreply = f'npm {npm} tidak ditemukan didata bimbingan Bapak/Ibu dosen'
        else:
            pembimbing_ke = pembimbingPositionAs(data, kodedosen)
            setSingleApprovalBimbingan(npm, kodedosen, pembimbing_ke, 'true')
            nama_mahasiswa = kelas.getStudentNameOnly(npm)
            msgreply = 'oke sudah #BOTNAME# approve untuk KAMBING'
            msgreply += f'\n\nNPM: {npm}\nNama: {nama_mahasiswa}'
    return msgreply
def kelasSelesai(driver, data):
    if kelas.cekSiap():
        grp = data[1]
        num = data[0]
        if kelas_mulai.isJadwalID(kelas.getKodeDosen(num), grp.split('-')[0]):
            msg = data[3]
            msg = message.normalize(msg)
            if 'luring' in msg:
                tipe = 'luring'
            else:
                tipe = 'daring'
            try:
                kehadiran = kelas.getKehadiran(grp.split('-')[0])
                rencana_kehadiran = kelas.rencana_kehadiran(grp.split('-')[0])
                if (kehadiran != rencana_kehadiran and
                        kehadiran < rencana_kehadiran) or (kelas.isSudahKelas(
                            jadwalid=grp.split('-')[0],
                            lecturercode=kelas.getKodeDosen(num=num))):
                    wmsg = reply.getWaitingMessage(
                        os.path.basename(__file__).split('.')[0])
                    wa.typeAndSendMessage(driver, wmsg)
                    materi = msg.lower()
                    try:
                        materi = materi.split(' materi ')[1]
                    except:
                        return f'yahhh materinya ngga ada nih tambahin dong materinyaaa.....,\ncontoh: iteung kelas daring selesai materi chapter 1'
                    msgreply = kelas.siapabsensiwithsql(
                        grp=grp,
                        num=numbers.normalize(num),
                        materi=materi,
                        tipe=tipe)
                    if msgreply != '':
                        if msgreply != []:
                            try:
                                msgreply = kelas.beritaAcara(driver=driver,
                                                             num=num,
                                                             groupname=grp,
                                                             data=msgreply,
                                                             msg=msg)
                            except:
                                msgreply = 'aduh materinya ga ada nich, \ncontoh format yang bener gini ya: \niteung kelas daring selesai materi chapter 04'
                        else:
                            msgreply = 'aduh mahasiswanya belum ada yang update nomer hp SIAP nich, \nKalo mau ke absen cocokin dulu dong nomer hp yang ada di SIAP dengan yang kamu pakai di WhatsApp \nIngat ya gunakan format international, contoh: 6282217401448 '
                    else:
                        msgreply = "adohhhh wadohdoh peserta absensinya kosong nih, coba ganti ke jadwal id yang satunya lagi eheeeee.... :-3"
                elif kehadiran == '':
                    msgreply = 'yahhhhh kehadirannya ngga #BOTNAME# temuin coba di cek lagi jadwal idnya yaaa....'
                else:
                    msgreply = 'Mohon maaf Untuk kuliah daring ini sudah memenuhi kuota pertemuan pada jadwal kali ini...'
            except:
                listMK = kelas.getListMK(kelas.getKodeDosen(data[0]))
                guide = 'yahh....nama groupnya jangan diubah dong. hihihi ganti lagi ya.jadi JADWALID-KELAS-NAMAMK,contoh : 17312-A-KECERDASAN BUATAN : \n'
                msgreply = guide + listMK
        else:
            listMK = kelas.getListMK(kelas.getKodeDosen(data[0]))
            guide = 'aduwww waduwduwwww ini bukan Jadwal ID Bapak/Ibu dosen nihhhh, yang bener yang dibawah ini yaaa.... : \n'
            msgreply = guide + listMK
    else:
        msgreply = 'Mohon maaf server Akademik SIAP sedang dalam kondisi DOWN, mohon untuk menginformasikan ke ADMIN dan tunggu hingga beberapa menit kemudian, lalu ulangi kembali, terima kasih....'
    return msgreply
def replymsg(driver, data):
    msg = message.normalize(data[3])
    num = numbers.normalize(data[0])
    try:
        nama_lengkap = msg.split(' nama lengkap ')[1].split(' email ')[0]
        email = data[3].lower().replace(':', '').replace(',', '').replace(
            '\n', '').split(' email ')[1].split(' alamat lengkap ')[0]
        alamat_lengkap = data[3].lower().replace(':', '').replace(
            ',', '').replace('\n', '').split(' alamat lengkap ')[1]
    except:
        return 'salah keywordnya nihhh, formatnya seperti ini yaaa.' \
               '\n*iteung daftar seminar nama lengkap: tri angga dio Simamora, email: [email protected], alamat lengkap: JL. SariAsih No. 54, Kota Bandung*'
    if isTerdaftar(num):
        updateDataSeminar(nama_lengkap, email, num, alamat_lengkap)
        return f'Nomor anda ({num}) sudah terdaftar sebagai peserta dan sudah {config.bot_name} update untuk datanya sebagai berikut.\n\n' \
               f'Nama Lengkap: {nama_lengkap}\n' \
               f'No. Handphone: {num}\n' \
               f'E-Mail: {email}\n' \
               f'Alamat Lengkap: {alamat_lengkap}\n\n' \
               f'Mohon kehadirannya tepat waktu, {config.bot_name} ucapkan Terima Kasih.'
    daftarSeminar(nama_lengkap, email, num, alamat_lengkap)
    return f'oke sudah {config.bot_name} daftarin ya berikut datanya.\n\n' \
           f'Nama Lengkap: {nama_lengkap}\n' \
           f'No. Handphone: {num}\n' \
           f'E-Mail: {email}\n' \
           f'Alamat Lengkap: {alamat_lengkap}\n\n' \
           f'Mohon kehadirannya tepat waktu yaaa, {config.bot_name} ucapkan Terima Kasih'
Exemple #6
0
def get(num, msg):
    try:
        msg = message.normalize(msg)
        msgs = list(msg.split(" "))

        if len(msgs) == 1:
            msgreply = reply.getOpeningMessage()
        else:
            msgreply = reply.message(msg)
            print(msgreply)
            if msgreply[:2] == 'm:':
                modulename = msgreply.split(':')[1]
                mod = import_module('module.' + modulename)
                print(msg)
                msgreply = mod.replymsg(num, msg)
    except Exception as e:
        print(e)
        msgreply = reply.getErrorMessage()
        msgreply = msgreply.replace("#ERROR#", str(e))

    if 'msgreply' in locals():
        if msgreply[:2] != 'm:':
            try:
                msgreply = msgreply.replace("#BOTNAME#", config.bot_name)
            except:
                msgreply = "field reply not found!!"

    return msgreply
def replymsg(driver, data):
    npm, nama = kelas.getNpmandNameMahasiswa(data[0])
    msg=data[3]
    msg=message.normalize(msg)
    try:
        pembimbing_1 = msg.split(' pembimbing 1 ')[1].split(' pembimbing 2 ')[0]
        pembimbing_2 = msg.split(' pembimbing 2 ')[1].split(' judul ')[0]
        tipe_bimbingan= msg.split(' tipe bimbingan ')[1]
        judul = data[3].split(' judul ')[1].split(' tipe bimbingan ')[0]
    except:
        return f'aduuuu salah keyword nih bro bro bri brii.... coba dicek lagi yaa keywordnyaa....'
    if cekBimbinganData(npm):
        updateBimbinganData(
            npm,
            pembimbing_1.upper(),
            pembimbing_2.upper(),
            judul,
            tipe_bimbingan
        )
        msgreply=f'okeee sudah {config.bot_name} update menjadi'
    else:
        insertNewBimbinganData(
            npm,
            pembimbing_1.upper(),
            pembimbing_2.upper(),
            judul,
            tipe_bimbingan
        )
        msgreply=f'okeee sudah {config.bot_name} masukin yaaa datanya'
    msgreply+=f'\n\nNPM: {npm}\nNama: {nama}\nPembimbing 1: {kelas.getNamaDosen(pembimbing_1)}\nPembimbing 2: {"-" if pembimbing_2 == "-" else kelas.getNamaDosen(pembimbing_2)}\nJudul: {judul}\nTipe Bimbingan: {kambing.switcherTipeBimbingan(tipe_bimbingan)}'
    return msgreply
Exemple #8
0
def replymsg(diver, data):
    msg = message.normalize(data[3])
    kode_beruntung = msg.split(' kode beruntung ')[1]
    if cekData(kode_beruntung):
        msgreply = 'ada hadiah'
    else:
        msgreply = 'tidak ada hadiah'
    return msgreply
def cekNpminStringMessage(msg):
    msg_split = message.normalize(msg).split(' ')
    print(msg_split)
    for word in msg_split:
        if word == '':
            continue
        else:
            if kelas.getDataMahasiswa(word):
                return word
    return None
Exemple #10
0
def replymsg(driver, data):
    num = numbers.normalize(data[0])
    msg = message.normalize(data[3])
    data = f'{num};{msg}'
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wmsg = wmsg.replace('#BOTNAME#', config.bot_name)
    subprocess.Popen(
        ["python", "run.py",
         os.path.basename(__file__).split('.')[0], data],
        cwd=config.cwd)
    return wmsg
def replymsg(driver, data):
    tahun = valid_year_uda(message.normalize(data[3]).split(' '))
    npm, status = cek_biodata_va_bauk.cekNPM(message.normalize(data[3]).split(' '))
    if status:
        if tahun:
            msgreply = 'ini yaa datanyaa...\n\n'
            i=getData(f'{tahun}1', npm)
            print(i)
            msgreply += f'NPM Mahasiswa: *{i["MhswID"]}*\n' \
                        f'Nama Mahasiswa: *{i["nama"]}*\n' \
                        f'Tanggal Lahir: *{i["TGL_LAHIR"]}*\n' \
                        f'NIK KTP: *{i["nik"]}*\n' \
                        f'Judul: *{i["Judul"]}*\n' \
                        f'Total SKS: *{i["SKS_SMT"]}*\n' \
                        f'IPK Transkrip: *{i["IPK_Trans"]}*\n' \
                        f'Prodi: *{i["Nama"]}*'
        else:
            msgreply = 'tahun tidak valid'
    else:
        msgreply='npm tidak valid'
    return msgreply
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    msg = message.normalize(data[3])
    tipe_bimbingan = cek_bimbingan_dosen.cekTipeBimbingan(msg)
    if tipe_bimbingan:
        startdate = datetime.date(
            bimbingan_dosen.getStartDate(data[0], tipe_bimbingan))
        pertemuan = bimbingan_dosen.countPertemuan(startdate)
        prodi = getHomebase(data[0])
        return 'ini yaa info pertemuannya:\n\nProdi: {prodi}\nJadwal Mulai Pertemuan: {startdate}\nPertemuan: {pertemuanke}'.format(
            prodi=prodi, startdate=startdate, pertemuanke=pertemuan[0])
    else:
        return 'aduhhh mana nihhh kok ngilang tipe bimbingannya ....'
Exemple #13
0
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    num = data[0]
    jadwal_id_msg = message.normalize(data[3]).split(' ')[-1]
    dosenid = kelas.getKodeDosen(num=num)
    jadwalID = getJadwalIDfromDosenID(dosenid=dosenid)
    if jadwal_id_msg == 'all':
        msg = allJadwalIDDosen(jadwalID)
        msgreply = msg
    else:
        data = []
        datafix = []
        data.append(jadwal_id_msg)
        data.append(kelas.getMkDetails(jadwal_id_msg)[2])
        datafix.append(data)
        msg = allJadwalIDDosen(datafix)
        msgreply = msg
    return msgreply
Exemple #14
0
def allJadwalIDDosen(jadwalID):
    msg = 'ini yaaa datanya...\n\n'
    for i in jadwalID:
        msg += f"Jadwal ID: {i[0]}\nNama Matakuliah: {i[1]}\n"
        msg += "Pertemuan | Materi Perkuliahan\n"
        presensi = getPresensiFromJadwalID(i[0])
        if presensi != ():
            for j in presensi:
                pertemuan = j[4]
                if j[-2] != None:
                    materiPerkuliahan = message.normalize(j[-2])
                    msgs = f"{pertemuan} | {materiPerkuliahan}\n"
                else:
                    msgs = f"{pertemuan} | _(belum diisi)_\n"
                msg += msgs
        else:
            msg += 'mohon maaf jadwalid tidak dapat ditemukan'
        msg += '\n'
    return msg
Exemple #15
0
def cekAndSendMessage(message_flask, number):
    try:
        driver = ''
        isgrp = 'website'
        msg = message_flask
        als = 'website'
        grp = 'website'
        num = numbers.normalize(number)
        log.save(num=num,
                 msg=msg,
                 als=als,
                 grp=grp,
                 isgrp=isgrp,
                 tipe='website')
        data = []
        data.append(num)
        data.append(grp)
        data.append(als)
        data.append(msg)
        data.append(isgrp)
        msg = message.normalize(msg)
        msgs = list(msg.split(" "))
        if msg.find(config.bot_name) >= 0:
            if len(msgs) == 1:
                msgreply = reply.getOpeningMessage()
            else:
                msgreply = reply.message(msg)
                if msgreply[:2] == 'm:':
                    modulename = msgreply.split(':')[1]
                    mod = import_module('module.' + modulename)
                    if mod.auth(data):
                        msgreply = mod.replymsg(driver, data)
                    else:
                        msgreply = reply.getReplyAuth(modulename)
    except Exception as e:
        msgreply = reply.getErrorMessage()
        msgreply = msgreply.replace("#ERROR#", str(e))

    if 'msgreply' in locals():
        msgreply = msgreply.replace("#BOTNAME#", config.bot_name)
        msgreply = message.newlineNormalize(msgreply)
        return msgreply
Exemple #16
0
def replymsg(driver, data):
    kode_dosen_approve = message.normalize(data[3]).split(' ')[-1]
    if kelas.getNamaDosen(kode_dosen_approve):
        npm_mahasiswa_list = berita_acara_pitak.getListMahasiswa(
            kode_dosen_approve.upper())
        datamahasiswa = ''
        for npm in npm_mahasiswa_list:
            data = approve_kambing.getDataPembimbing(
                npm, kode_dosen_approve.upper())
            pembimbingke = approve_kambing.pembimbingPositionAs(
                data, kode_dosen_approve.upper())
            updateApprovalKoordinator(
                npm, pembimbingke,
                pembimbingke.replace('pembimbing', 'koordinator'),
                kode_dosen_approve.upper(), 'true')
            datamahasiswa += f'NPM: {npm}\nNama: {kelas.getStudentNameOnly(npm)}\n\n'
        msgreply = f'sudah di approve yaaa dengan Dosen {kelas.getNamaDosen(kode_dosen_approve.upper())} dan ini daftar mahasiswa bimbingannya:\n\n{datamahasiswa}'
    else:
        msgreply = f'aduhhhh #BOTNAME# nggak tau nih kode dosen {kode_dosen_approve} ini siapa yaaa.... ga bisa nemuin nih #BOTNAME# coba yaaaa diperhatikan lagiii....'
    return msgreply
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    num=data[0]
    msg=data[3]
    msg=message.normalize(msg)
    npm=[]
    kodedosen=kelas.getKodeDosen(num)
    tipe_bimbingan=cekTipeBimbingan(msg)
    if tipe_bimbingan:
        for i in getMahasiswaBimbingan(kelas.getTahunID(), tipe_bimbingan):
            if i[1]==kodedosen or i[2]==kodedosen:
                npm.append(i[0])
        try:
            datefromdatabasehomebase=bimbingan_dosen.getStartDate(num, tipe_bimbingan)
            startdate = datetime.date(datefromdatabasehomebase)
            if 'pertemuan' in msg:
                pertemuan=msg.split(' pertemuan ')[1]
            else:
                pertemuan, datemulai, dateakhir=bimbingan_dosen.countPertemuan(startdate)
            try:
                pertemuan=int(pertemuan)
                msgreply=f'Nama Dosen: {kelas.getNamaDosen(kodedosen)}\n' \
                         f'Prodi: {pertemuan_bimbingan.getHomebase(num)}\n' \
                         f'Pertemuan: {pertemuan}\n\n' \
                         f'NPM | Nama | Status Bimbingan\n\n'
                for i in npm:
                    cek=cek_bimbingan(i, kodedosen, pertemuan, tipe_bimbingan)
                    namamahasiswa=kelas.getStudentNameOnly(i)
                    if cek == None:
                        msgreply+=f'*{i}* | {namamahasiswa} | *_BELUM BIMBINGAN_*\n'
                    else:
                        msgreply+=f'*{i}* | {namamahasiswa} | *_SUDAH BIMBINGAN_*\n'
            except Exception as e:
                msgreply=f'wahhh salah di pertemuan nih bosqqqqqqqqqqqq coba pertemuannya make angka yak jangan make hurup....'
        except:
            msgreply='ihhhhh belum diset nih tanggal awal bimbingannya coba deh Bapak/Ibu dosen komunikasi ya sama KAPRODI untuk set tanggal mulai bimbingannnya, tutorial bisa dibaca di panduan iteung yaaa yang bagian *kaprodi* hatur tengkyuuu....'
    else:
        msgreply='eh eh eh mana nihhh tipe bimbingannya harus dimasukin ke keyword yaaaa tipe bimbingannya cek di panduan mahasiswa bimbingan yaaa...'
    return msgreply
Exemple #18
0
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    num = data[0]
    msg = data[3]
    msg = message.normalize(msg)
    npm = []
    kodedosen = kelas.getKodeDosen(num)
    for i in getMahasiswaBimbingan(kelas.getTahunID()):
        if i[1] == kodedosen or i[2] == kodedosen:
            npm.append(i[0])
    try:
        datefromdatabasehomebase = bimbingan_dosen.getStartDate(num)
        startdate = datetime.date(datefromdatabasehomebase)
        if 'pertemuan' in msg:
            pertemuan = msg.split(' pertemuan ')[1]
        else:
            pertemuan, datemulai, dateakhir = bimbingan_dosen.countPertemuan(
                startdate)
        try:
            pertemuan = int(pertemuan)
            msgreply = 'Nama Dosen: {lecturername}\nProdi: {prodi}\nPertemuan: {pertemuan}'.format(
                lecturername=kelas.getNamaDosen(kodedosen),
                prodi=pertemuan_bimbingan.getHomebase(num),
                pertemuan=str(
                    pertemuan)) + '\n\nNPM | Nama | Status Bimbingan\n\n'
            for i in npm:
                cek = cek_bimbingan(i, kodedosen, pertemuan)
                namamahasiswa = kelas.getStudentNameOnly(i)
                if cek == None:
                    msgreply += '*' + i + '*' + ' | ' + namamahasiswa + ' | ' + '*_BELUM BIMBINGAN_*' + '\n'
                else:
                    msgreply += '*' + i + '*' + ' | ' + namamahasiswa + ' | ' + '*_SUDAH BIMBINGAN_*' + '\n'
        except:
            msgreply = 'wahhh salah di pertemuan nih bosqqqqqqqqqqqq coba pertemuannya make angka yak jangan make hurup....'
    except:
        msgreply = 'ihhhhh belum diset nih tanggal awal bimbingannya coba deh Bapak/Ibu dosen komunikasi ya sama KAPRODI untuk set tanggal mulai bimbingannnya, tutorial bisa dibaca di panduan iteung yaaa yang bagian *kaprodi* hatur tengkyuuu....'
    return msgreply
Exemple #19
0
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    msg=data[3]
    msg=message.normalize(msg)
    successsplit=''
    try:
        tipe_bimbingan=msg.split('bimbingan ')[1].split(' sudah dikerjakan')[0]
        studentid=kelas.getNpmandNameMahasiswa(data[0])[0]
        # topik=msg.split('topik ')[1].split(' nilai')[0].replace(' ', '%20')
        # pertemuan=msg.split('pertemuan ')[1].split(' nilai')[0]
        target_selesai = msg.split('sudah dikerjakan ')[1].split(' pekerjaan selanjutnya')[0].replace(' ', '%20')
        terget_selanjutnya = msg.split('pekerjaan selanjutnya ')[1].split(' nilai')[0].replace(' ', '%20')
        nilai=msg.split('nilai ')[1]
    except:
        successsplit='error'
    if successsplit == 'error':
        msgreply='wahh salah keyword bosqqq'
    else:
        if tipeSwitcher(tipe_bimbingan) == True:
            datenow = datetime.date(datetime.now()).strftime('%d%m%Y')
            hari = datetime.now().strftime('%A')
            hari = hariSwitcher(hari)
            obj = AES.new(config.key, AES.MODE_CBC, config.iv)
            cp = obj.encrypt(studentid+datenow+hari)
            passcode=cp.hex()
            msgreply='Mohon untuk klik link berikut untuk konfirmasi bimbingan:\n\nhttps://api.whatsapp.com/send?phone={nomoriteung}&text=iteung%20input%20bimbingan%20{tipebimbingan}%20{npm}%0Asudah%20dikerjakan%20{targetselesai}%0Apekerjaan%20selanjutnya%20{targetselanjutnya}%0Anilai%20{nilai}%0Apasscode%20{passcode}'.format(
                nomoriteung=config.nomor_iteung,
                tipebimbingan=tipe_bimbingan,
                npm=studentid,
                nilai=nilai,
                passcode=passcode,
                targetselesai=target_selesai,
                targetselanjutnya=terget_selanjutnya
            )
        else:
            msgreply='tuh salah nih tipe bimbingannya coba di cek lagi yaa qaqa ehee.....'
    return msgreply
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    msg = data[3]
    msg = message.normalize(msg)
    try:
        tipe_bimbingan = msg.split(' bimbingan ')[1].split(
            ' sudah dikerjakan')[0]
        studentid = kelas.getNpmandNameMahasiswa(data[0])[0]
        target_selesai = msg.split('sudah dikerjakan ')[1].split(
            ' pekerjaan selanjutnya')[0].replace(' ', '%20')
        terget_selanjutnya = msg.split('pekerjaan selanjutnya ')[1].split(
            ' nilai')[0].replace(' ', '%20')
        nilai = msg.split('nilai ')[1]
    except:
        return 'duh salah keyword nih bosqqqq'
    if tipeSwitcher(tipe_bimbingan):
        datenow = datetime.date(datetime.now()).strftime('%d%m%Y')
        hari = datetime.now().strftime('%A')
        hari = hariSwitcher(hari)
        data = bytes(f'{studentid}{datenow}{hari}', 'utf-8')
        passcode = encryptData(data)
        return f'Mohon untuk klik link berikut untuk konfirmasi bimbingan:\n\nhttps://api.whatsapp.com/send?phone={config.nomor_iteung}&text=iteung%20input%20bimbingan%20{tipe_bimbingan}%20{studentid}%0Asudah%20dikerjakan%20{target_selesai}%0Apekerjaan%20selanjutnya%20{terget_selanjutnya}%0Anilai%20{nilai}%0Apasscode%20{passcode["ciphertext"].replace("+", "plussign")}%0Aivcode%20{passcode["iv"].replace("+", "plussign")}'
    return 'duh salah nih tipe bimbingannya coba di cek lagi yaa qaqa ehee.....'
Exemple #21
0
def kelasMulai(data):
    msg = data[3]
    msg = message.normalize(msg)
    if kelas.cekSiap():
        grp = data[1]
        num = data[0]
        if isJadwalID(kelas.getKodeDosen(num), grp.split('-')[0]):
            try:
                rencana_kehadiran = kelas.rencana_kehadiran(grp.split('-')[0])
                kehadiran = kelas.getKehadiran(grp.split('-')[0])
                if (kehadiran != rencana_kehadiran and
                        kehadiran < rencana_kehadiran) or (kelas.isSudahKelas(
                            jadwalid=grp.split('-')[0],
                            lecturercode=kelas.getKodeDosen(num=num))):
                    # if kelas.is_time_to_attendant(grp.split('-')[0]):
                    if kelas.isMatkul(grp.split('-')[0]):
                        jadwalid = grp.split('-')[0]
                        jadwalserial = kelas.getJadwalSerial(jadwalid=jadwalid)
                        if jadwalserial == '0':
                            jadwalid = jadwalid
                        else:
                            jadwalid = jadwalserial
                        abc = 1
                        listStudent = '\n\nBerikut Peserta Absensinya:\n'
                        for i in kelas.pesertaAbsensi(jadwalid=jadwalid):
                            npm = i[-1]
                            nama = kelas.getStudentNameOnly(npm)
                            listStudent += f'{abc}. {npm} {nama} {kelas.getStudentPhoneNumberFromNPM(npm)} {kelas.getStudentEmail(npm)}\n'
                            abc += 1
                        coursename = kelas.getDataMatkul(grp.split('-')[0])[1]
                        messages = reply.getWaitingMessage(
                            os.path.basename(__file__).split('.')[0])
                        messages = messages.replace('#MATKUL#', coursename)
                        messages = messages.replace('#BOTNAME#',
                                                    config.bot_name)
                        if 'luring' in msg:
                            link = '\n\nLink Kelas Luring (offline):\n' + config.link_kelas_luring + grp.replace(
                                ' ', '%20')
                            msgreply = messages + link + listStudent
                        else:
                            msgreply = messages + listStudent
                    else:
                        listMK = kelas.getListMK(kelas.getKodeDosen(data[0]))
                        guide = 'Yahh... Nama grupnya belum JADWALID-KELAS-NAMA. yuk ubah #BOTNAME# kasih contoh 17312-A-KECERDASAN BUAT klo lupa kode mata kuliah #BOTNAME# kasih ya ini daftarnya : \n'
                        msgreply = guide + listMK
                    # else:
                    #     data = kelas.jam_mulai_jam_selesai(grp.split('-')[0])
                    #     return f'iwiwiwiwiwiwwwwwwww jam sekarang diluar batas waktu kelas nihhh mohon untuk memulai kelas pada jamnya yaaa... \n\nMatakuliah: {data["Nama"]}\nJam Mulai: {data["JamMulai"]}\nJam Selesai: {data["JamSelesai"]}'
                elif kehadiran == '':
                    msgreply = 'yahhhhh kehadirannya ngga #BOTNAME# temuin coba di cek lagi jadwal idnya yaaa....'
                else:
                    jadwalid = grp.split('-')[0]
                    datamatkul = kelas.getMatakuliahInfowithJadwalID(jadwalid)
                    if datamatkul == None:
                        msgreply = "mohon maaf JadwalID salah bisa untuk dicek kembali...."
                    else:
                        datamatkul = kelas.getMatakuliahInfowithJadwalID(
                            jadwalid)
                        prodi = kelas.switcherJurusan(datamatkul[5])
                        mkkode = datamatkul[11]
                        namamatkul = datamatkul[12]
                        hari = kelas.toHari(str(datamatkul[13]))
                        jammulai = datamatkul[14]
                        jamselesai = datamatkul[15]
                        dosen = kelas.getNamaDosen(datamatkul[21])
                        rencanakehadiran = datamatkul[22]
                        kehadiran = datamatkul[23]
                        msgreply = 'Mohon maaf Untuk kuliah daring ini sudah memenuhi kuota pertemuan pada jadwal kali ini...\n\n'
                        msgreply += f"Jadwal ID: {jadwalid}\nProgram Studi: {prodi}\nKode Matakuliah: {mkkode}\nNama Matakuliah: {namamatkul}\nHari: {hari}\nJam Mulai: {jammulai}\nJam Selesai: {jamselesai}\nDosen/Kode Dosen: {dosen}/{datamatkul[21]}\nRencana Kehadiran: {rencanakehadiran}\nKehadiran: {kehadiran}"
            except Exception as e:
                print(str(e))
                listMK = kelas.getListMK(kelas.getKodeDosen(data[0]))
                guide = 'Di setting dulu ya nama groupnya jadi JADWALID-KELAS-NAMA contoh : 17312-A-KECERDASAN BUAT, ini daftarnya : \n'
                msgreply = guide + listMK
        else:
            listMK = kelas.getListMK(kelas.getKodeDosen(data[0]))
            guide = 'aduwww waduwduwwww ini bukan Jadwal ID Bapak/Ibu dosen nihhhh, yang bener yang dibawah ini yaaa.... : \n'
            msgreply = guide + listMK
    else:
        msgreply = 'Mohon maaf server Akademik SIAP sedang dalam kondisi DOWN, mohon untuk menginformasikan ke ADMIN dan tunggu hingga beberapa menit kemudian, lalu ulangi kembali, terima kasih....'
    return msgreply
Exemple #22
0
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    num = numbers.normalize(data[0])
    msg = message.normalize(data[3])
    msgs = msg.split(' ')
    excelkeyword = msgs[-1]
    dosenID = kelas.getKodeDosen(num)
    if excelkeyword == 'excel':
        try:
            namafile = hakiaptimas.downloadFile(driver)
            downloadstatus = True
        except Exception as e:
            downloadstatus = False
        if downloadstatus:
            if namafile.split('.')[1] == 'xlsx':
                hakiaptimas.moveFiles(namafile)
                msgreply = 'okeee sudah #BOTNAME# update yaa materi perkuliahannya:'
                wb = load_workbook(namafile)
                ws = wb.active
                for row in ws.iter_rows(values_only=True):
                    if row[0] == 'jadwal id':
                        continue
                    else:
                        jadwalid = row[0]
                        pertemuan = row[1]
                        materiperkuliahan = row[2]
                        updateMateriPerkuliahan(jadwalid, pertemuan,
                                                materiperkuliahan)
                        msgreply += f'\n\nJadwal ID: {jadwalid}\nPertemuan: {pertemuan}\nMateri Perkuliahan: {materiperkuliahan}'
                deleteFilesWithCWD(namafile)
            else:
                msgreply = 'format file salah, harus .xlsx'
                deleteFilesOnDownloadsFolder(namafile)
        else:
            msgreply = 'mana filenya coyyyyy'
    else:
        try:
            datasplit = msg.split(' materi perkuliahan ')[1]
            jadwalid = int(datasplit.split(' ')[0])
            jadwalidDosen = cek_mp.getJadwalIDfromDosenID(dosenID)
            for i in jadwalidDosen:
                if jadwalid in i:
                    isAdaJadwal = True
                    break
                else:
                    isAdaJadwal = False
            if isAdaJadwal:
                pertemuan = datasplit.split(' ')[2]
                if len(pertemuan) > 1:
                    materi = datasplit.split(' pertemuan ')[1][3:]
                else:
                    materi = datasplit.split(' pertemuan ')[1][2:]
                print(f'{jadwalid} | {pertemuan} | {materi}')
                updateMateriPerkuliahan(jadwalid, pertemuan, materi)
                msgreply = f'okeee bosqqq sudah di update yaaa\nJadwal ID: {jadwalid}\nPertemuan: {pertemuan}\nMateri: {materi}'
            else:
                msgreply = 'Jadwal ID yang dimasukkan salah atau tidak ditemukan!'
        except Exception as e:
            print(str(e))
            msgreply = 'format katanya salah nichhhh bosqueeee'
    return msgreply
Exemple #23
0
    def cekAndSendMessage(self, driver):
        if config.useemulator:
            wa.restartMemu(wa.detectphoneNotConnected(driver))
        wa.sendOutbox(driver)
        messageindex = config.message_wa_index
        alsandnumindex = config.default_alias_number_index
        # for loop in range(wa.messageunread(driver)):
        try:
            wa.openMessage(driver)
            data = wa.getData(driver,
                              message_wa_index=messageindex,
                              default_alias_number_index=alsandnumindex)
            messageindex -= 11
            alsandnumindex -= 1
            isgrp = data[4]
            msg = data[3]
            als = data[2]
            grp = data[1]
            num = data[0]
            messageindex -= 10
            alsandnumindex -= 1
            msg = message.normalize(msg)
            print(msg)
            msgs = list(msg.split(" "))
            if msg.find(config.bot_name) >= 0:
                if len(msgs) == 1:
                    msgreply = reply.getOpeningMessage()
                else:
                    msgreply = reply.message(msg)
                    if msgreply[:2] == 'm:':
                        modulename = msgreply.split(':')[1]
                        mod = import_module('module.' + modulename)
                        if mod.auth(data):
                            msgreply = mod.replymsg(driver, data)
                        else:
                            msgreply = reply.getReplyAuth(modulename)
        except Exception as e:
            msgreply = reply.getErrorMessage()
            msgreply = msgreply.replace("#ERROR#", str(e))

        if 'msgreply' in locals():
            if msgreply[:2] != 'm:':
                msgreply = msgreply.replace("#BOTNAME#", config.bot_name)
                try:
                    msgreply = message.newlineNormalize(msgreply)
                    # wa.typeAndSendMessage(driver, msgreply)
                    wa.copyToClipboard(msgreply)
                    wa.clickChatBox(driver)
                    wa.pasteMessage(driver)
                    wa.sendMessage(driver)
                    del msgreply
                except:
                    print("field reply not found!!")

        try:
            if self.msgcheck != msg or (self.numcheck != num
                                        and self.alscheck != als):
                log.save(num=num,
                         msg=msg,
                         als=als,
                         grp=grp,
                         isgrp=isgrp,
                         tipe='daring')
                self.msgcheck = msg
                self.numcheck = num
                self.alscheck = als
        except Exception as e:
            msgreply = reply.getErrorMessage()
            msgreply = msgreply.replace("#ERROR#", str(e))
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wmsg = wmsg.replace('#BOTNAME#', config.bot_name)
    wa.typeAndSendMessage(driver, wmsg)
    num = numbers.normalize(data[0])
    jadwalid = data[3].split(' ')[-1]
    status = cekStatus(num)
    updatefield = updateField(status)
    if status == 'kaprodi':
        kaprodiprodiid = getKaprodiProdiID(num)
        if jadwalid == 'all':
            statusbap = cek_tanda_tangan_bap.approveBAPKaprodi(
                f'.{kaprodiprodiid}.')[2]
            if len(statusbap) > 0:
                for bapjadwalid in statusbap:
                    confirmBKD(bapjadwalid, updatefield)
                resultbapdosengrouping = makeListDosenAfterApprove(statusbap)
                msgreply = f'okee sudah berhasil #BOTNAME# approve semua datanya yaaa ini data yang berhasil #BOTNAME# approve {resultbapdosengrouping}'
            else:
                msgreply = 'aduh wadidiw, ga ada nih berkas yang bisa di approve hihihihi'
        else:
            if kelas.getMkkode(jadwalid):
                if cekProdiIDKaproditoJadwalID(kaprodiprodiid, jadwalid):
                    if cek_tanda_tangan_bap.cekMateriPerkuliahan(jadwalid):
                        confirmBKD(jadwalid, updatefield)
                        msgreply = f'okee sudah berhasil #BOTNAME# set approvalnya untuk JadwalID *{jadwalid}* yaa...'
                    else:
                        msgreply = f'waduh mohon maaf sepertinya belum bisa approve JadwalID yang {jadwalid} deh soalnya materinya belum lengkap atau masih ada yang kosong'
                else:
                    msgreply = f'hayooo Bapak/Ibu dari prodi mana hayooo kok mau set JadwalID yang lain hayoooo'
            else:
                msgreply = f'aduhhhhh #BOTNAME# ga bisa nemuin Jadwal ID yang {jadwalid} dehhh coba cek lagi yaaa'
    else:
        if jadwalid == 'all':
            statusbap = cek_tanda_tangan_bap.approveBAPDeputi(
                message.normalize(data[3]))[2]
            if len(statusbap) > 0:
                for bapjadwalid in statusbap:
                    confirmBKD(bapjadwalid, updatefield)
                resultbapdosengrouping = makeListDosenAfterApprove(statusbap)
                msgreply = f'okee sudah berhasil #BOTNAME# approve semua datanya yaaa ini data yang berhasil #BOTNAME# approve {resultbapdosengrouping}'
            else:
                msgreply = 'yahhhh sayang sekali belum ada berkas yang siap untuk di approve nichhhhh'
        else:
            prodiid = cek_tanda_tangan_bap.getProdiIDfromSingkatan(jadwalid)
            if prodiid:
                statusbap = cek_tanda_tangan_bap.approveBAPDeputi(
                    message.normalize(data[3]))[2]
                if len(statusbap) > 0:
                    for bapjadwalid in statusbap:
                        confirmBKD(bapjadwalid, updatefield)
                    resultbapdosengrouping = makeListDosenAfterApprove(
                        statusbap)
                    msgreply = f'okee sudah berhasil #BOTNAME# approve semua datanya yaaa ini data yang berhasil #BOTNAME# approve {resultbapdosengrouping}'
                else:
                    msgreply = 'yahhhh sayang sekali belum ada berkas yang siap untuk di approve nichhhhh'
            else:
                if kelas.getMkkode(jadwalid):
                    if cek_tanda_tangan_bap.cekMateriPerkuliahan(jadwalid):
                        confirmBKD(jadwalid, updatefield)
                        msgreply = f'okee sudah berhasil #BOTNAME# set approvalnya untuk JadwalID *{jadwalid}* yaa...'
                    else:
                        msgreply = f'waduh mohon maaf sepertinya belum bisa approce JadwalID yang {jadwalid} deh soalnya materinya belum lengkap atau masih ada yang kosong'
                else:
                    msgreply = f'aduhhhhh #BOTNAME# ga bisa nemuin Jadwal ID yang {jadwalid} dehhh coba cek lagi yaaa'
    return msgreply
Exemple #25
0
def replymsg(driver, data):
    wmsg = reply.getWaitingMessage(os.path.basename(__file__).split('.')[0])
    wa.typeAndSendMessage(driver, wmsg)
    num = data[0]
    msg = data[3]
    msg = message.normalize(msg)
    datefromdatabasehomebase = getStartDate(num)
    if datefromdatabasehomebase is None:
        msgreply = 'wahhh kayaknya jadwal start bimbingannya belum diset sama kaprodi kamu deehhhh, coba minta di setting dulu jadwalnya....'
    else:
        startdate = datetime.date(datefromdatabasehomebase)
        pertemuan, datemulai, dateakhir = countPertemuan(startdate)
        if pertemuan == False:
            msgreply = 'yahhh pertemuannya udah kelewat batasss, yang sabar yaaaaaa..... :('
        else:
            successsplit = ''
            try:
                studentid = msg.split('bimbingan ')[1].split(' ')[1]
                tipe = msg.split('bimbingan ')[1].split(' ')[0]
                target_selesai = msg.split('sudah dikerjakan ')[1].split(
                    ' pekerjaan selanjutnya')[0]
                terget_selanjutnya = msg.split(
                    'pekerjaan selanjutnya ')[1].split(' nilai')[0]
                topik = target_selesai + ';' + terget_selanjutnya
                nilai = msg.split('nilai ')[1].split(' passcode')[0]
                passcode = msg.split('passcode ')[1]
            except:
                successsplit = 'error'
            if successsplit == 'error':
                msgreply = 'wahhhh salah nih keywordnya coba diperbaikin deh....'
            else:
                obj = AES.new(config.key, AES.MODE_CBC, config.iv)
                dec = bytes.fromhex(passcode)
                resultpasscode = obj.decrypt(dec).decode('utf-8')
                datenow = datetime.date(datetime.now()).strftime('%d%m%Y')
                hari = datetime.now().strftime('%A')
                hari = bimbingan_mahasiswa.hariSwitcher(hari)
                studentphonenumber = kelas.getStudentPhoneNumberFromNPM(
                    studentid)
                studentphonenumber = normalizePhoneNumberToWhatsappVersion(
                    studentphonenumber)
                logmsg = ''
                for i in getLogMessageStudent(datemulai, dateakhir,
                                              kelas.getKodeDosen(num),
                                              studentphonenumber):
                    if i[0] != '':
                        logmsg += i[0] + ';'
                if logmsg == '':
                    msgreply = 'mohon maaf tidak ada diskusi diantara Dosen dan Mahasiswa maka tidak bisa di input... atau dosen dan mahasiswa kurang aktif diskusi'
                else:
                    if resultpasscode == studentid + datenow + hari:
                        if int(nilai) > 100:
                            msgreply = 'buset nilainya kaga salah itu bos?? gede benerr......'
                        else:
                            kodedosen = kelas.getKodeDosen(num)
                            if isSudahInputBimbingan(studentid, pertemuan,
                                                     kodedosen):
                                updateNilaiBimbingan(studentid=studentid,
                                                     nilai=nilai,
                                                     topik=topik,
                                                     pertemuan=pertemuan,
                                                     logmsg=logmsg)
                                msgreply = 'oke sudah iteung update yaaa nilainya.....'
                            else:
                                insertBimbingan(studentid=studentid,
                                                lecturerid=kodedosen,
                                                tipe=tipe,
                                                topik=topik,
                                                nilai=nilai,
                                                pertemuan=pertemuan,
                                                logmsg=logmsg)
                                msgreply = 'oke sudah di input yaaa....'
                            nama = kelas.getStudentNameOnly(studentid)
                            databimbingan = getDataBimbingan(studentid)
                            if databimbingan == None:
                                msgreply = 'maaf data bimbingan tidak dapat ditemukan'
                            else:
                                pembimbing1 = databimbingan[0][-3]
                                pembimbing2 = None
                                for i in databimbingan:
                                    if i[-3] != pembimbing1:
                                        pembimbing2 = databimbingan.index(i)
                                        break
                                if pembimbing2 is None:
                                    pembimbing2 = False
                                    pembimbing1 = databimbingan[0:]
                                else:
                                    pembimbing1 = databimbingan[0:pembimbing2]
                                    pembimbing2 = databimbingan[pembimbing2:]
                                msgreply += '\n\n*PENILAIAN DOSEN PEMBIMBING*'
                                for i in pembimbing1:
                                    topik = i[3].split(';')
                                    target_selesai = topik[0]
                                    target_selanjutnya = topik[1]
                                    datalog = i[7]
                                    datalog = datalog.split(';')
                                    namadosen = kelas.getNamaDosen(i[5])
                                    msgreply += '\n\nNama: {nama}\nNPM: {studentid}\nTipe: {tipe}\nPertemuan: {pertemuanke}\nSudah Dikerjakan: {targetselesai}\nPekerjaan Selanjutnya: {targetselanjutnya}\nNilai: {nilai}\nPenilai: {penilai} / {namadosen}\nJumlah Percakapan: {log}'.format(
                                        nama=nama,
                                        studentid=i[0],
                                        tipe=i[1],
                                        pertemuanke=i[2],
                                        targetselesai=target_selesai,
                                        targetselanjutnya=target_selanjutnya,
                                        nilai=i[4],
                                        penilai=i[5],
                                        log=str(len(datalog)),
                                        namadosen=namadosen)
                                if pembimbing2 == False:
                                    msgreply += '\n\n*PENILAIAN DOSEN PEMBIMBING*\npembimbing belum input nilai'
                                else:
                                    msgreply += '\n\n*PENILAIAN DOSEN PEMBIMBING*'
                                    for i in pembimbing2:
                                        topik = i[3].split(';')
                                        target_selesai = topik[0]
                                        target_selanjutnya = topik[1]
                                        datalog = i[7]
                                        datalog = datalog.split(';')
                                        namadosen = kelas.getNamaDosen(i[5])
                                        msgreply += '\n\nNama: {nama}\nNPM: {studentid}\nTipe: {tipe}\nPertemuan: {pertemuanke}\nSudah Dikerjakan: {targetselesai}\nPekerjaan Selanjutnya: {targetselanjutnya}\nNilai: {nilai}\nPenilai: {penilai} / {namadosen}\nJumlah Percakapan: {log}'.format(
                                            nama=nama,
                                            studentid=i[0],
                                            tipe=i[1],
                                            pertemuanke=i[2],
                                            targetselesai=target_selesai,
                                            targetselanjutnya=
                                            target_selanjutnya,
                                            nilai=i[4],
                                            penilai=i[5],
                                            log=str(len(datalog)),
                                            namadosen=namadosen)
                    else:
                        msgreply = 'passcodenya salah bosqueeeeee'
    return msgreply