示例#1
0
def add_lecture_to_shedule():
    g_chat, g_text
    lectures = db.get_all_lecture_infos()
    shedule = db.get_studentlectures(g_chat)
    matched_lecture = match_lecture_name(g_text, lectures)
    message = ""
    if matched_lecture["title"] in shedule:
        message = "Die Vorlesung {} ist bereits in deinem Stundenplan eingetragen.".format(
            matched_lecture["title"])
    elif matched_lecture:
        lecture_id = db.get_lecture_id(matched_lecture["title"])
        db.add_lecture(lecture_id, g_chat)
        message = "Ich habe die Vorlesung {} zu deinem Stundenplan hinzugefügt. Sie ist am {} von {} Uhr bis {} Uhr in {}.".format(
            matched_lecture["title"],
            GERMAN_WEEKDAYS[matched_lecture["weekday"]],
            matched_lecture["start"], matched_lecture["end"],
            matched_lecture["room_name"])
    else:
        message = (
            "Ich habe diese Vorlesung leider nicht gefunden." + EMOJI_SAD +
            "\nHier sind alle Vorlesungen aufgeführt:"
            "https://www.uni-due.de/imperia/md/content/vv/vvz_ws_2017-18_due_1011_inkowiss.pdf"
        )
    send_message(message, g_chat)
    return True
示例#2
0
def get_learning_group():
    global g_chat
    answer = "Lerngruppen findest du möglicherweise im komedia-Forum: \n" \
             "http://fsr-komedia.zim.uni-due.de/forum/ \n\n" \
             "Falls nicht: Geh in die Uni und sprich Kommilitonen an " + EMOJI_NERD
    send_message(answer, g_chat)
    return True
示例#3
0
def question_where():
    global g_chat
    answer = "Du suchst anscheind einen Ort. Was genau suchst du?"
    options = [["Wo findet eine Vorlesung statt?"],
               ["Wo befindet sich ein Raum?"]]
    _wants_to_know_where.append(g_chat)
    send_message(answer, g_chat, build_keyboard(options))
    return True
示例#4
0
def get_lectures():
    g_chat
    lectures = db.get_all_lecture_infos()
    message = "Das sind alle Vorlesungen:\n"
    for lecture in lectures:
        message += "\n " + lecture["title"] + "\n"
    send_message(message, g_chat)
    return True
示例#5
0
def delete_lecture_from_shedule():
    g_chat
    _wants_to_remove.append(g_chat)
    lectures = db.get_studentlectures(g_chat)
    keyboard = build_lecture_keyboard(lectures)
    send_message("Wähle eine Vorlesung aus, die gelöscht werden soll", g_chat,
                 keyboard)
    return True
示例#6
0
def get_my_shedule():
    g_chat
    lectures = db.get_studentlectures(g_chat)
    message = "Das sind alle deine Vorlesungen dieses Semester:\n"
    for lecture in lectures:
        message += "\n " + lecture + "\n"
    send_message(message, g_chat)
    return True
示例#7
0
def get_exam_registration():
    global g_chat
    answer = "Die Prüfungsanmeldephase für das Sommersemester 2018 beginnt am 07.05.18 und endet am 18.05.18.\n" \
             "Eine Prüfung kann über folgendes Portal angemeldet werden: \n\n" \
             "https://campus.uni-due.de/lsf  \n\n" \
             "Terminpläne für Bachelor und Master sind unter folgendem Link zu finden: \n\n" \
             "https://www.uni-due.de/verwaltung/pruefungswesen/d_komed_startseite.php"
    send_message(answer, g_chat)
    return True
示例#8
0
def get_vpn():
    global g_chat
    answer = "Der Zugriff auf Uni-Dienste von z.B. Zuhause aus kann über eine VPN-Verbindung gewährleistet werden." \
             "Windows-Nutzer können hierfür Cisco AnyConnect verwenden: \n" \
             "https://www.uni-due.de/zim/services/internetzugang/cisco-vpn-anyconnect \n\n" \
             "Für MacOS und Linux bietet sich OpenConnect an: \n" \
             "https://www.uni-due.de/zim/services/internetzugang/openconnect.php"
    send_message(answer, g_chat)
    return True
示例#9
0
def get_certificate_of_study():
    global g_chat
    answer = "Die Studienbescheinigung ist unter folgendem Link verfügbar:\n" \
             "https://campus.uni-due.de/cm/ \n \n" \
             "Schritte:\n" \
             "1.) Mit Unikennung einloggen \n" \
             "2.) Auf \"Mein Studium\" -> \"Studienservice\" -> \"Bescheinigungen\" klicken \n" \
             "3.) .pdf-Datei mit Studienbescheinigung runterladen "
    send_message(answer, g_chat)
    return True
示例#10
0
def get_test_subject_hours():
    global g_chat
    answer = "Versuchspersonenstunden (VPS) werden für die Teilnahme an wissenschaftlichen Studien vergeben. \n" \
             "Ausschreibungen findest du unter anderem im Komedia-Forum \n" \
             "http://fsr-komedia.zim.uni-due.de/forum/ \n" \
             "oder bei Facebook im Komedia-Versuchspersonenmarkt\n" \
             "https://www.facebook.com/groups/1089565127742196/ \n\n" \
             "Neben anderen Veranstaltungen sind 30 VPS die Voraussetzung um das Modul \"Methodologie psychologischer Forschung\" " \
             "abzuschließen."
    send_message(answer, g_chat)
    return True
示例#11
0
def get_bot_information():
    global g_chat
    answer = "Hallo, ich bin der ganz persönliche Chatbot für Erstsemester des Komedia-Studiengangs. \n" \
             "Ich habe Informationen über die folgenden Bereiche: \n \n" \
             "- Vorlesungen und Zeiten \n" \
             "- Räume und Veranstaltungen\n" \
             "- Mensa-Speisepläne \n" \
             "- Semesterbeiträge \n" \
             "- Prüfungsanmeldungen \n" \
             "- Studienbescheinigungen \n" \
             "\n" \
             "...und noch vieles mehr!"

    send_message(answer, g_chat)
    return True
示例#12
0
def get_room():
    global g_chat, g_text
    rooms = db.get_all_room_infos()
    matched_room = match_room_name(g_text, rooms)
    message = ""
    found = False
    if matched_room:
        message = "Der Raum befindet sich hier:"
        found = True
    else:
        message = "Ich kenne diesen Raum leider nicht."
    send_message(message, g_chat)
    if found:
        send_location(g_chat, matched_room["longitude"],
                      matched_room["latitude"])
    return True
示例#13
0
def get_lecture_time():
    global g_chat, g_text
    lectures = db.get_all_lecture_infos()
    for lecture in lectures:
        print(lecture)
    matched_lecture = match_lecture_name(g_text, lectures)
    message = ""
    if matched_lecture:
        message = "Die Vorlesung {} findet von {} Uhr bis {} Uhr am {} statt.".format(
            matched_lecture["title"], matched_lecture["start"],
            matched_lecture["end"],
            GERMAN_WEEKDAYS[matched_lecture["weekday"]])
    else:
        message = (
            "Ich kenne diese Vorlesung leider nicht, oder du hast nicht den richtigen Namen verwendet. Die Bezeichnungen findest du hier:"
            "https://www.uni-due.de/imperia/md/content/vv/vvz_ws_2017-18_due_1011_inkowiss.pdf"
        )
    send_message(message, g_chat)
    return True
示例#14
0
def get_lecture_place():
    global g_chat, g_text
    lectures = db.get_all_lecture_infos()
    matched_lecture = match_lecture_name(g_text, lectures)
    message = ""
    found = False
    if matched_lecture:
        message = "Die Vorlesung {} findet im Raum {} statt.".format(
            matched_lecture["title"], matched_lecture["room_name"])
        found = True
    else:
        message = (
            "Ich kenne diese Vorlesung leider nicht, oder du hast nicht den richtigen Namen verwendet. Die Bezeichnungen findest du hier:"
            "https://www.uni-due.de/imperia/md/content/vv/vvz_ws_2017-18_due_1011_inkowiss.pdf"
        )
    send_message(message, g_chat)
    if found:
        send_location(g_chat, matched_lecture["room_longitude"],
                      matched_lecture["room_latitude"])
    return True
def get_pattern_match(text, chat):
    if (chat in _wants_to_remove):
        lectures = db.get_studentlectures(chat)
        if (text in lectures):
            db.delete_lecture_by_title(text, chat)
            _wants_to_remove.remove(chat)
            message = "Ich habe die Vorlesung {} aus deinem Studenplan gelöscht.".format(
                text)
        send_message(message, chat, build_keyboard_remove())
        return
    elif chat in _wants_to_know_where:
        message = ""
        if text == "Wo findet eine Vorlesung statt?":
            message = "Um welche Vorlesung geht es?"
            _wants_to_know_lecture_room.append(chat)
        elif text == "Wo befindet sich ein Raum?":
            message = "Um welchen Raum geht es?"
            _wants_to_know_room.append(chat)
        else:
            message = "Oh dann frag mich doch einfach etwas anderes."
        _wants_to_know_where.remove(chat)
        send_message(message, chat, build_keyboard_remove())
        return
    elif chat in _wants_to_know_lecture_room:
        text = "Wo findet {} statt?".format(text)
        _wants_to_know_lecture_room.remove(chat)
    elif chat in _wants_to_know_room:
        text = "Wo ist Raum {}?".format(text)
        _wants_to_know_room.remove(chat)

    cleaned_text = text.strip()
    removeChars = "_?!.-"
    for char in removeChars:
        cleaned_text = cleaned_text.replace(char, "")
    cleaned_text = cleaned_text.lower()

    gave_answer = False
    with open(os.path.join(__location__, 'patterns.dat'),
              encoding='utf-8') as file:
        for line in file:
            if len(line) <= 1:
                continue
            skill_name = line.split(' ', 1)[0]
            skill_text = line.split(' ', 1)[1]

            skill_text = skill_text.strip()
            skill_patterns = skill_text.split("_")

            pattern_match = True

            for x in range(0, len(skill_patterns)):
                if len(skill_patterns[x]) == 0:
                    continue
                skill_patterns[x] = skill_patterns[x].strip()
                skill_patterns[x] = skill_patterns[x].lower()
                if x == 0:
                    if not cleaned_text.startswith(skill_patterns[x]):
                        pattern_match = False
                        break
                elif x == len(skill_patterns) - 1:
                    if not cleaned_text.endswith(skill_patterns[x]):
                        pattern_match = False
                        break
                else:
                    if skill_patterns[x] not in cleaned_text:
                        pattern_match = False
                        break

            if pattern_match:
                if get_skill_match(skill_name, skill_text, cleaned_text, chat):
                    gave_answer = True
                    break

    if not gave_answer:
        with open("unknown_requests.txt", "a") as myfile:
            myfile.write(cleaned_text + "\n")
        send_message("Das habe ich leider nicht verstanden.", chat)
def check_for_command(cmd, chat, args=None):
    sargs = "None"
    if args:
        sargs = ''.join(args)
    print("[BOT]:: Checking for command : " + cmd + " with arguments : " +
          sargs)
    if cmd == "removelecture":
        _wants_to_remove.append(chat)
        lectures = db.get_studentlectures(chat)
        keyboard = build_lecture_keyboard(lectures)
        send_message("Wähle eine Vorlesung aus, die gelöscht werden soll",
                     chat, keyboard)
    elif cmd == "addlecture":
        if args:
            print("ARGS = " + args[0])
            lectureid = -1
            # Check type
            if type(args[0]) is int:
                lectureid = args[0]
            elif type(args[0]) is str:
                # Find lectureID
                name = args[0]
                lectureid = db.get_lecture_id(name)
            print("[BOT]:: Command detected : ADD LECTURE with ID =  " +
                  str(lectureid))
            if lectureid >= 0:
                db.add_lecture(lectureid, chat)
                lectures = db.get_studentlectures(chat)
                message = "\n".join(lectures)
                send_message(message, chat)
    elif cmd == "getlectures":
        lectures = db.get_studentlectures(chat)
        message = ("Diese Vorlesungen hast du " "in deinem Stundenplan:\n")
        for lecture in lectures:
            message += '\n' + lecture
        send_message(message, chat)
    elif cmd == "showlectures":
        lectures = db.get_lectures()
        message = ("Diese Vorlesungen hast du " "in deinem Stundenplan:\n")
        for lecture in lectures:
            message += '\n' + lecture
        send_message(message, chat)
    elif cmd == "getlectureinfos":
        if args:
            lecture_id = -1
            try:
                lecture_id = int(args[0])
            except ValueError as err:
                return
            lecture_infos = db.get_lecture_infos(lecture_id)
            if lecture_infos:
                print("[BOT]:: Command detected : GET LECTURE INFOS = " +
                      lecture_infos["title"] + " on " +
                      lecture_infos["weekday"] + " from " +
                      lecture_infos["start"] + " to " + lecture_infos["end"] +
                      " in room " + lecture_infos["room_name"])
                message = "Die Vorlesung {} findet am {} von {} Uhr bis {} Uhr in Raum {} statt.".format(
                    lecture_infos["title"],
                    GERMAN_WEEKDAYS[lecture_infos["weekday"]],
                    lecture_infos["start"], lecture_infos["end"],
                    lecture_infos["room_name"])
                send_message(message, chat)
            else:
                print(
                    "[BOT]:: Command detected : GET LECTURE INFOS = NO LECTURE FOUND!"
                )
                message = "Tut mir Leid, ich weiß leider nichts über die Vorlesung mit dem Titel {}. Bist du dir sicher, dass sie existiert?".format(
                    args[0])
                send_message(message, chat)
    elif cmd == "getroominfos":
        if args:
            room_infos = db.get_room_infos(args[0])
            if room_infos:
                print("[BOT]:: Command detected : GET ROOM INFOS = " +
                      room_infos["name"] + " on floor " +
                      str(room_infos["floor"]) + " at longitude " +
                      room_infos["longitude"] + " and latitude " +
                      room_infos["latitude"])
                message = "Der Raum, den du suchst befindet sich hier im {} Stock:".format(
                    str(room_infos["floor"]))
                send_message(message, chat)
                send_location(chat, room_infos["longitude"],
                              room_infos["latitude"])
            else:
                print(
                    "[BOT]:: Command detected : GET ROOM INFOS = NO ROOM FOUND!"
                )
                message = "Tut mir Leid, ich weiß leider nicht wo der Raum {} ist. Bist du dir sicher, dass er existiert?".format(
                    args[0])
                send_message(message, chat)
    else:
        print("[BOT]:: Command not found : " + cmd)
示例#17
0
def answer_how_are_you():
    global g_chat
    answer = "Ich bin ein Bot und habe daher keine Gefühle"
    send_message(answer, g_chat)
    return True
示例#18
0
def answer_hello():
    global g_chat
    answer = "Hallo :)"
    send_message(answer, g_chat)
    return True
示例#19
0
def get_free_software():
    global g_chat
    send_message("FreeSoftware", g_chat)
    return True
示例#20
0
def get_how_to_use():
    global g_chat
    send_message("HowTo", g_chat)
    return True
示例#21
0
def get_semester_fee():
    global g_chat
    answer = "Der Sozial- und Studierendenschaftsbeitrag beträgt für das Sommersemester 2018 insgesamt 304,62 €.\n" \
             "Der Beitrag kann bis zum 02.03.2018 überwiesen werden."
    send_message(answer, g_chat)
    return True