Example #1
0
def process_step_4(message):
    cursor3 = db.token.find_one({"id": encoder(str(message.chat.id))})
    cur = []
    cursor4 = dict(cursor3)
    for j in cursor4["token"]:
        cur.append(decoder(j))

    if message.text in cur:
        try:
            gl = Gitlab('https://git.iu7.bmstu.ru/',
                        private_token=message.text)
            gl.auth()
            username = gl.user.username
            db.token.find_one_and_update(
                {
                    "id": encoder(str(message.chat.id)),
                    "token": encoder(cur)
                }, {'$set': {
                    "idGitLab": encoder(username)
                }})

        except gitlab.GitlabAuthenticationError:
            st = open('./static/access_denied.webp', 'rb')
            bot.send_sticker(message.chat.id, st)

            bot.send_message(
                message.chat.id,
                "Произошла ошибка при авторизации в GitLab. Проверьте правильность токена",
                parse_mode="html",
                reply_markup=types.ReplyKeyboardRemove())
    else:
        bot.send_message(message.chat.id,
                         "Такого TOKEN нет в твоем списке...",
                         parse_mode="html",
                         reply_markup=types.ReplyKeyboardRemove())
Example #2
0
def process_step_3(message):
    if message.chat.username is None:
        name_user = str(message.chat.id)
    else:
        name_user = "******" + message.chat.username

    bot.send_message('538587223',
                     "Имя пользователя, оставившего комментарий: " +
                     name_user + "\nКомментарий: " + message.text,
                     parse_mode="html")
Example #3
0
def send_problem(message):
    st = open('./static/problem.webp', 'rb')
    bot.send_sticker(message.chat.id, st)

    bot.send_message(message.chat.id,
                     "Ты уверен??? Если ты нашел ошибку... прости нас 😥",
                     parse_mode="html")

    bot.send_message(
        message.chat.id,
        "Кратко опиши проблему, мы постараемся ее исправить в скором времени 😬\n",
        parse_mode="html",
        reply_markup=types.ReplyKeyboardRemove())

    bot.register_next_step_handler(message, process_step_3)
Example #4
0
def process_step_5(message):
    if message.chat.username is None:
        name_user = str(message.chat.id)
    else:
        name_user = "******" + message.chat.username

    cursor3 = db.token.find_one({"id": encoder(str(message.chat.id))})
    cur = []
    cursor4 = dict(cursor3)
    for j in cursor4["token"]:
        cur.append(decoder(j))

    if message.text in cur:
        for j, i in enumerate(cur):
            if message.text == i:
                cur.pop(j)

        db.token.find_one_and_update({"id": encoder(str(message.chat.id))},
                                     {'$set': {
                                         "token": encoder(cur)
                                     }})

        bot.send_message(message.chat.id,
                         "Ваш TOKEN ( " + message.text +
                         " ) был удачно удален из нашей базы данных",
                         parse_mode="html")

        if len(cur) != 0:
            item3 = types.KeyboardButton("Удаление TOKEN")
            markup1 = types.ReplyKeyboardMarkup(resize_keyboard=True)
            markup1.add(item3)

            bot.send_message(
                message.chat.id,
                "Могу предложить удалить еще TOKEN. Если надо, жми кнопочку",
                parse_mode="html",
                reply_markup=markup1)

            bot.register_next_step_handler(message, process_step_1)
        else:
            bot.send_message(message.chat.id,
                             name_user + ", ты удалил все TOKEN",
                             parse_mode="html",
                             reply_markup=types.ReplyKeyboardRemove())

    else:
        bot.send_message(message.chat.id,
                         "Такого TOKEN нет в твоем списке...",
                         parse_mode="html",
                         reply_markup=types.ReplyKeyboardRemove())
Example #5
0
def process_step_2(message):
    cursor3 = db.token.find_one({"id": encoder(str(message.chat.id))})
    cur = []
    cursor4 = dict(cursor3)
    for j in cursor4["token"]:
        cur.append(decoder(j))

    if message.text in cur:
        bot.send_message(message.chat.id,
                         "Данный TOKEN уже есть в нашей базе данных",
                         parse_mode="html",
                         reply_markup=types.ReplyKeyboardRemove())
    else:
        cur.append(message.text)
        db.token.find_one_and_update({"id": encoder(str(message.chat.id))},
                                     {'$set': {
                                         "token": encoder(cur)
                                     }})
        bot.send_message(message.chat.id,
                         "Ваш TOKEN был успешно добавлен в нашу базу данных 🎉",
                         parse_mode="html",
                         reply_markup=types.ReplyKeyboardRemove())

        try:
            gl = Gitlab('https://git.iu7.bmstu.ru/',
                        private_token=message.text)
            gl.auth()
            username = gl.user.username
            db.token.find_one_and_update(
                {
                    "id": encoder(str(message.chat.id)),
                    "token": encoder(cur)
                }, {'$set': {
                    "idGitLab": encoder(username)
                }})

        except gitlab.GitlabAuthenticationError:
            st4 = open('./static/access_denied.webp', 'rb')
            bot.send_sticker(message.chat.id, st4)

            bot.send_message(
                message.chat.id,
                "Произошла ошибка при авторизации в GitLab. Проверьте правильность токена",
                parse_mode="html",
                reply_markup=types.ReplyKeyboardRemove())
Example #6
0
def process_step_1(message):
    if message.text == 'Ввод TOKEN':
        bot.register_next_step_handler(message, process_step_2)
    elif message.text == 'Выбор TOKEN':
        cursor3 = db.token.find_one({"id": encoder(str(message.chat.id))})
        cur = []
        cursor4 = dict(cursor3)
        for j in cursor4["token"]:
            cur.append(decoder(j))

        bot.send_message(
            message.chat.id,
            "Давай выберем, какой TOKEN нужно использовать. Вот список твоих TOKEN:\n"
            + '\n'.join(cur),
            parse_mode="html",
            reply_markup=types.ReplyKeyboardRemove())

        bot.register_next_step_handler(message, process_step_4)
    elif message.text == 'Удаление TOKEN':
        cursor3 = db.token.find_one({"id": encoder(str(message.chat.id))})
        cur = []
        cursor4 = dict(cursor3)
        for j in cursor4["token"]:
            cur.append(decoder(j))

        bot.send_message(
            message.chat.id,
            "Давай выберем, какой TOKEN нужно удалить. Вот список твоих TOKEN:\n"
            + '\n'.join(cur),
            parse_mode="html",
            reply_markup=types.ReplyKeyboardRemove())

        bot.register_next_step_handler(message, process_step_5)
    else:
        bot.send_message(message.chat.id,
                         'Странно, такой команды нет...',
                         parse_mode="html",
                         reply_markup=types.ReplyKeyboardRemove())
Example #7
0
def send_welcome(message):
    if (message.chat.username is None) and (db.token.count_documents(
        {"id": encoder(str(message.chat.id))}) == 0):
        inline_item2 = types.InlineKeyboardButton(
            'Создание Username', url='https://telegram-rus.ru/nik')
        inline_bt2 = types.InlineKeyboardMarkup()
        inline_bt2.add(inline_item2)

        bot.send_message(
            message.chat.id, "У тебя нет никнейма в телеграме, "
            "мне приятнее обращаться к людям по никам, а не id. "
            "Нажав на кнопку, ты узнаешь, как создать никнейм. "
            "Но если тебя все устраивает, я не настаиваю, моей работе это не помешает 🤔",
            parse_mode="html",
            reply_markup=inline_bt2)

    if message.chat.username is None:
        name_user = str(message.chat.id)
    else:
        name_user = "******" + message.chat.username

    st = open('./static/privet.webp', 'rb')
    bot.send_sticker(message.chat.id, st)

    if 5 <= timer[3] < 11:
        bot.send_message(
            message.chat.id,
            "Доброе утро , " + name_user +
            "! Какая же ты ранняя пташка, а я ведь мог и спать в это время 😅",
            parse_mode="html")

    if 11 <= timer[3] < 17:
        bot.send_message(
            message.chat.id,
            "Добрый день, " + name_user +
            "! Как же ты вовремя я только вернулся с обеденного перекуса 🥘 А ты покушал?",
            parse_mode="html")

    if 17 <= timer[3] < 23:
        bot.send_message(message.chat.id,
                         "Добрый вечер, " + name_user +
                         "! Ого уже вечер, ты домой то не собираешься? 🌅",
                         parse_mode="html")

    if (timer[3] == 23) or (0 <= timer[3] < 5):
        bot.send_message(
            message.chat.id,
            "Доброй ночи... добрая ночь... в общем, привет, " + name_user +
            "! Ты чего не спишь, давай не засиживайся, спать - полезно 😴",
            parse_mode="html")

    if db.token.count_documents({"id": encoder(str(message.chat.id))}) == 1:
        cursor = db.token.find_one({"id": encoder(str(message.chat.id))})
        cur = []
        cursor1 = dict(cursor)
        for j in cursor1['token']:
            cur.append(decoder(j))
        token_string = '\n'.join(cur)

        if cur:
            bot.send_message(
                message.chat.id,
                "По твоему id в базе данных я нашел следующие TOKEN:\n" +
                token_string,
                parse_mode="html")

            item1 = types.KeyboardButton("Ввод TOKEN")
            item2 = types.KeyboardButton("Выбор TOKEN")
            item3 = types.KeyboardButton("Удаление TOKEN")
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            markup.add(item1)
            markup.add(item2)
            markup.add(item3)

            bot.send_message(
                message.chat.id,
                "Хочешь добавить TOKEN, выбрать или удалить один из уже имеющихся - "
                "жми на соответствующие кнопочки ",
                parse_mode="html",
                reply_markup=markup)

            bot.register_next_step_handler(message, process_step_1)

        elif not cur:
            item1 = types.KeyboardButton("Ввод TOKEN")
            markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
            markup.add(item1)

            bot.send_message(
                message.chat.id,
                name_user + ", по твоему id не было найденно ни одного TOKEN. "
                "Давай добавим, жми на кнопочку",
                parse_mode="html",
                reply_markup=markup)

            bot.register_next_step_handler(message, process_step_1)

    elif db.token.count_documents({"id": encoder(str(message.chat.id))}) > 1:
        bot.send_message(
            message.chat.id,
            "По твоему id в базе данных я нашел больше одного упоминания! "
            "Это ненормально, но твоей вины здесь нет. "
            "Напиши /problem и опиши этот случай "
            "(можешь перекопировать текст моего сообщения). Извини за неудобства 😬",
            parse_mode="html")

    elif db.token.count_documents({"id": encoder(str(message.chat.id))}) == 0:
        db.token.insert_one({
            "id": encoder(str(message.chat.id)),
            "token": [],
            "idGitLab": []
        })

        inline_item1 = types.InlineKeyboardButton(
            'Как получить TOKEN',
            url='https://habr.com/ru/company/flant/blog/340996/')
        inline_bt1 = types.InlineKeyboardMarkup()
        inline_bt1.add(inline_item1)

        item1 = types.KeyboardButton("Ввод TOKEN")
        markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
        markup.add(item1)

        bot.send_message(
            message.chat.id,
            name_user +
            ", ты у нас впервые, твой id был удачно записан в базу данных.",
            parse_mode="html",
            reply_markup=markup)

        bot.send_message(
            message.chat.id,
            "Теперь давай добавим TOKEN. Если ты не знаешь, где его найти, нажми на кнопочку ",
            parse_mode="html",
            reply_markup=inline_bt1)

        bot.register_next_step_handler(message, process_step_1)
Example #8
0
def answer(message):
    bot.send_message(
        message.chat.id,
        "К сожалению, я не знаю, что мне ответить 😓\nНапиши / , чтобы увидеть доступные команды",
        parse_mode="html")
Example #9
0
def send_instruction(message):
    st = open('./static/instruction_2.0.webp', 'rb')
    bot.send_sticker(message.chat.id, st)

    bot.send_message(
        message.chat.id, "На данный момент бот работает только с версией "
        "GitLab v12.10.2(именно она установлена на гите кафедры).\n"
        "Со временем планируется расширение функционала.",
        parse_mode="html")

    bot.send_message(message.chat.id,
                     "Для того, чтобы начать работу с нашим ботом необходимо:",
                     parse_mode="html")

    bot.send_message(
        message.chat.id,
        "Авторизоваться в системе с помощью приватного токена авторизации "
        "(получить его можно в настройках своего профиля - AcessTokens,"
        "боту необходим доступ для чтения пользователя и репозитория)",
        parse_mode="html")

    bot.send_message(
        message.chat.id,
        "Для того, чтобы начать получать уведомления о приходящих Merge нужно:",
        parse_mode="html")

    bot.send_message(
        message.chat.id,
        f"Если вы владелец репозитория, зайти в его настройки -> "
        "Webhooks и в поле адреса URL вписать наш адрес: {0}.".format(OUR_URL),
        parse_mode="html")

    bot.send_message(
        message.chat.id,
        "Внимание ‼️ Временно необходимо снять ✅ с пункта SSL верификации. "
        "Если же репозиторий вам не пренадлежит, следует обратиться к его мэйнтейнеру.",
        parse_mode="html")