Exemplo n.º 1
0
def register(user_id, message_words):
    if len(message_words) != 3:
        return Tip['register'], ''
    db = MySQLdb.connect(host=p['host'],
                         user=p['user'],
                         passwd=p['passwd'],
                         db=p['db'],
                         charset="utf8",
                         use_unicode=True)
    c = db.cursor()
    #проверяем, есть ли студент в базе
    try:
        if common.check_register(user_id):
            answer = Success['register_check']
            return answer, ''
    except:
        answer = Error['register_check']
        return answer, ''

    #регистрируем нового студента, если его нет в базе
    try:
        c.execute(
            """INSERT INTO Students (Surname, Name, idVK) VALUES (upper(%s), upper(%s), %s)""",
            [message_words[1], message_words[2],
             str(user_id)])
        db.commit()
    except:
        db.rollback()
        answer = Error['register_new']
        return answer, ''
    db.close()
    answer = Success['register']
    return answer, ''
Exemplo n.º 2
0
def group(user_id, message_words):
    if not common.check_register(user_id):
        return Tip['group_update'], ''
    if len(message_words) != 2:
        return Tip['group'], ''

    db = MySQLdb.connect(host=p['host'],
                         user=p['user'],
                         passwd=p['passwd'],
                         db=p['db'],
                         charset="utf8",
                         use_unicode=True)
    c = db.cursor()
    #обновляем группу
    try:
        c.execute("""SELECT COUNT(*) FROM Students WHERE idVK=%s""", [user_id])
        if c.fetchone()[0] == 0:
            db.close()
            return Tip['group_update'], ''

        c.execute(
            """UPDATE Students SET Students.Group=%s WHERE idVK=%s""",
            [message_words[1].upper(), str(user_id)])
        db.commit()
    except:
        db.rollback()
        answer = Error['group']
    db.close()
    answer = Success['group']
    return answer, ''
Exemplo n.º 3
0
def hello(user_id, message_words):
    #проверяем, есть ли студент в базе
    try:
        if common.check_register(user_id):
            answer = Tip['hello_old']
        else:
            answer = Tip['hello_new']
    except:
        answer = Error['hello']
        return answer, ''

    try:
        db = MySQLdb.connect(host=p['host'],
                             user=p['user'],
                             passwd=p['passwd'],
                             db=p['db'],
                             charset="utf8",
                             use_unicode=True)
        c = db.cursor()
        c.execute(
            """SELECT MAX(id) FROM Students UNION SELECT COUNT(*) FROM Activity"""
        )
        res = c.fetchall()
        st_count = str(res[0][0])
        #reg_count = str(res[1][0])
        answer += '\n\n🤖 Мной пользуются уже ' + st_count + ' чел.'  # \n📢 Отправлено приглашений: '+reg_count
    except:
        return answer, ''
    return answer, ''
Exemplo n.º 4
0
def tutor(user_id, message_words):
   if not common.check_register(user_id):
      return Tip['tutor_update'], ''
   if len(message_words) != 2:
      return Tip['tutor'], ''

   db=MySQLdb.connect(host=p['host'], user=p['user'], passwd=p['passwd'], db=p['db'], charset = "utf8", use_unicode = True)
   c=db.cursor()
   #обновляем препода
   try:
      c.execute("""UPDATE Students SET Students.Tutor=%s WHERE idVK=%s""", [message_words[1].title(), str(user_id)])
      db.commit()
      answer = Success['tutor']
   except:
      db.rollback()
      answer = Error['tutor']
   db.close()
   return answer, ''
Exemplo n.º 5
0
def department(user_id, message_words):
   if not common.check_register(user_id):
      return Tip['department_update'], ''
   if (len(message_words) == 2 and message_words[1].upper() in ['АФК', 'АФКО', 'ФВ', 'ФОФ', 'ПРОФКОМ']):
      db=MySQLdb.connect(host=p['host'], user=p['user'], passwd=p['passwd'], db=p['db'], charset = "utf8", use_unicode = True)
      c=db.cursor()
   else:
      return Tip['department'], ''

   try:
      #обновляем кафедру
      c.execute("""UPDATE Students SET Students.Department=%s WHERE idVK=%s""", [message_words[1].upper(), str(user_id)])
      db.commit()
   except:
      db.rollback()
      answer = Error['department']
   db.close()
   answer = Success['department']
   return answer, ''
Exemplo n.º 6
0
def info(user_id, message_words):
    if not common.check_register(user_id):
        return Tip['info'], ''
    db = MySQLdb.connect(host=p['host'],
                         user=p['user'],
                         passwd=p['passwd'],
                         db=p['db'],
                         charset="utf8",
                         use_unicode=True)
    c = db.cursor()
    nf = '⛔'  #не заполнено
    #достаем всю информацию о студенте
    try:
        c.execute("""SELECT * FROM Students WHERE idVK=%s""", [str(user_id)])
        data = c.fetchone()
        if data[3] != None:
            group = data[3]
            g_flag = '🛡️'
        else:
            group = 'не задано'
            g_flag = nf
        if data[4] != None:
            tutor = data[4]
            t_flag = '🎽'
        else:
            tutor = 'не задано'
            t_flag = nf
        if data[6] != None:
            department = data[6]
            d_flag = '🏛'
        else:
            department = 'не задано'
            d_flag = nf
        answer = 'Вот, что мне известно о тебе: \n👤 ФИ: ' + data[1] + ' ' + data[
            2] + '\n' + g_flag + ' Группа: ' + group + '\n' + t_flag + ' Преподаватель: ' + tutor + '\n' + d_flag + ' Кафедра: ' + department  #+'\n'+a_flag+' Автопилот: '+autopilot
        tip = '\n\nТы можешь добавить или обновить информацию о группе, преподавателе и кафедре с помощью соответствующих команд. \nПример: ГРУППА 1234'

    except:
        answer = Error['info_student']
        tip = ''
    db.close()
    return answer + tip, ''
Exemplo n.º 7
0
def train(user_id, message_words):
    if not common.check_register(user_id):
        return Tip['info'], ''
    if len(message_words) != 3:
        return Tip['train'], ''
    db = MySQLdb.connect(host=p['host'],
                         user=p['user'],
                         passwd=p['passwd'],
                         db=p['db'],
                         charset="utf8",
                         use_unicode=True)
    c = db.cursor()
    uid = message_words[2].upper()

    #и получаем id пользователя, а заодно узнаем, есть ли у него незаполненные поля, чтобы потом кинуть ему подсказку
    try:
        c.execute("""SELECT id FROM Students WHERE idVK=%s""", [user_id])
        id = c.fetchone()[0]
        c.execute(
            """SELECT COUNT(*) FROM Students St WHERE idVK=%s AND St.Group IS NOT NULL AND St.Tutor IS NOT NULL AND St.Department IS NOT NULL""",
            [user_id])
        tip = True if c.fetchone()[0] == 0 else False
    except:
        db.close()
        return Error['train_reg'], ''
    if tip:
        db.close()
        return Error['train_info'], ''

    #проверяем, активно ли занятие
    try:
        c.execute("""SELECT Active, Day FROM Event WHERE uID=%s""", [uid])
        result = c.fetchone()
        active = result[0]
        day = result[1]
        if active == False:
            db.close()
            return Tip['train_day'], ''
    except:
        db.close()
        return Error['train_day'], ''

    #добавляем участника к событию и присылаем ему QR-код
    #но сначала проверяем, вдруг он уже добавлялся
    try:
        c.execute(
            """SELECT SecretKey FROM Activity WHERE StudentID=%s AND EventID=%s""",
            [id, uid])
        h = c.fetchone()
        if h == None:
            try:
                code = random.randint(11, 997) * (
                    int(user_id) % 9973) + random.randint(11, 9997)
                hcode = hashlib.md5(str(code).encode('utf8'))
                hash = hcode.hexdigest()
                c.execute(
                    """INSERT INTO Activity (StudentID, EventID, SecretKey) VALUES (%s, %s, %s)""",
                    [id, uid, hash])
                c.execute(
                    """INSERT INTO User_Event (User_id, Event) VALUES (%s, %s)""",
                    [user_id, uid])  #для дальнейшей генерации кнопок
                db.commit()
                db.close()
                #делаем картинку
                qr = pyqrcode.create(hash)
                qr.png('QR/' + hash + '.png', scale=10)  #делаем картинку
            except:
                db.rollback()
                db.close()
                return Error['train_add'], ''
        else:
            hash = h[0]
    except:
        db.close()
        return Error['train_check'], ''

    try:
        attachment = vkapi.send_image(token, user_id, hash)
        answer = '✅ Ты в списке участников на занятие ' + str(
            uid) + ', которое состоится ' + str(
                day) + '.\nПокажи этот QR-код на регистрации!📱'
        return answer, attachment
    except:
        return Error['train_send'], ''