示例#1
0
def new_percent(message):
    io_manager = buffer.get_buffer(message.chat.id)
    if check_user(message.chat.id):
        chat_id = message.chat.id
        if message.text == "В главное меню":
            handler_start(message)
            return
        elif message.text == "Администрирование":
            manage_admins(message)
            return
        elif (io_manager.is_int(message.text) == True):
            if (int(message.text) >= 0) & (int(message.text) <= 10):
                percent = message.text
            else:
                mes1 = bot.send_message(chat_id, "Процент не должен быть выше 10.\nВведите корректный процент")
                bot.register_next_step_handler(mes1, new_percent)
                return

            if io_manager.update_percent(int(message.text)) is True:
                bot.send_message(chat_id, "Процент изменен.\nНовый процент: " + str(percent))
                handler_start(message)
                log.info_logs(str(message.chat.id) + " set percent to " + str(percent))
        else:
            bot.send_message(chat_id, "Процент должен быть числом")
            bot.register_next_step_handler(message, new_percent)
    else:
        bot.send_message(message.chat.id, "У вас нет прав заходить сюда")
示例#2
0
def manage_admins(message):
    global print_admins
    io_manager = buffer.get_buffer(message.chat.id)
    ad.reload_admin_list()
    # print(ad.admins.encode('UTF-8'))
    if ad.admins == {}:
        print_admins = "Список администраторов пуст!"
    else:
        print_admins = "Список администраторов:\nАдминистратор | ID\n\n"
        for i in ad.admins:
            print_admins += str(i) + "  |  " + str(ad.admins.get(i)) + "\n"
    try:
        # Главный админ
        if (check_user(message.chat.id) & (ad.check_main_admins(message.chat.id)) & (io_manager != None)):
            bot.send_message(message.chat.id, text=print_admins, reply_markup=m.markup_manage_admins)

        elif io_manager == None:
            bot.send_message(message.chat.id, "Бот не запущен")
            start_handler(message)

        else:
            bot.send_message(message.chat.id, "У вас нет прав заходить сюда")
    except:
        log.error_logs("Error in the administrator definition:" + str(message.chat.id))
        bot.send_message(message.chat.id, "Ошибка в определении администратора")
示例#3
0
def start_handler(message):
    io_manager = io()
    buffer.set_buffer(message.chat.id, io_manager)
    ad.reload_admin_list()
    if check_user(message.chat.id):
        log.info_logs("User -  " + str(message.chat.id) + " was authorized")
        if ad.check_main_admins(message.chat.id) == True:
            bot.send_message(message.chat.id, "Запуск бота", reply_markup=m.first_markup_main_admin)
        else:
            bot.send_message(message.chat.id, "Запуск бота", reply_markup=m.first_markup)
        handler_start(message)
    else:
        buffer.del_buffer(message.chat.id)
        bot.send_message(message.chat.id,
                         "У вас нет прав заходить сюда. \nСообщите администратору ваш ID = " + str(message.chat.id),
                         reply_markup=m.markup_delete)
示例#4
0
def handle_message(message):
    global usage_number, input_number
    io_manager = buffer.get_buffer(message.chat.id)
    chat_id = message.chat.id
    if check_user(message.chat.id):
        if message.text == "В главное меню":
            input_number = ""
            handler_start(message)
            return
        elif message.text == "Администрирование":
            input_number = ""
            manage_admins(message)
            return

        try:
            text = message.text
            if usage_number != "":
                text = usage_number
                usage_number = ""
            number = text
            str_number = io_manager.number_processing(number)
            io_manager.get_information_request(str_number)
            if io_manager.error_request == False:
                log.info_logs(str(message.chat.id) + " requested information about the number: " + io_manager.number)
                bot.send_message(chat_id,
                                 "Информация о клиенте:\n" + "\U00002796"*9 + "\n\U0001F464Имя:  " + io_manager.name + "\n\U0000260EНомер:  " +
                                 io_manager.number + "\n\U0001F4B0Баланс:  " +
                                 str(io_manager.point), reply_markup=m.markup_change_points)
            else:
                if (int(message.text) >= 79000000000) & (int(message.text) <= 89999999999):
                    bot.send_message(chat_id, "Номер " + number + " не зарегистрирован",
                                     reply_markup=m.markup_in_number)
                    input_number = number
                else:
                    msg = bot.send_message(chat_id, "Номер введен некорректно. Повторите ввод номера")
                    bot.register_next_step_handler(msg, handle_message)
        except:
            log.error_logs("Error in handler_message" + str(chat_id) + "|" + message.text)
            msg1 = bot.send_message(chat_id, "Номер введен некорректно. Повторите ввод номера")
            bot.register_next_step_handler(msg1, handle_message)
            return

    else:
        bot.send_message(message.chat.id, "У вас нет прав заходить сюда")
示例#5
0
def handler_start(message):
    global check_history, check_sub_points, check_add_points, regs
    check_add_points = False
    check_sub_points = False
    check_history = False
    regs = False
    io_manager = buffer.get_buffer(message.chat.id)
    if ((check_user(message.chat.id)) & (io_manager != None)):
        chat_id = message.chat.id
        # console("В главное меню", message)
        bot.send_message(chat_id, '\U0001F44BПривет, ' + ad.get_admin_name(message.chat.id) + '\U0001F44B                                 \n'
                                'Тебя приветствует кэш-бэк сервис - ********\nСейчас процент: ' +
                         str(io_manager.get_percent()), reply_markup=m.markup_change_proc)

    elif io_manager == None:
        bot.send_message(message.chat.id, "Бот не запущен!")
        start_handler(message)
    else:
        bot.send_message(message.chat.id, "У вас нет прав заходить сюда")
示例#6
0
def registrations_main(message):
    global usage_number, regs, name, points, number, input_number, error_points
    io_manager = buffer.get_buffer(message.chat.id)
    if check_user(message.chat.id):
        if regs == False:
            log.info_logs(str(ad.get_admin_name) + " started registration")
        if message.text == "В главное меню":
            start_handler(message)
            regs = False
            return
        elif message.text == "Администрирование":
            manage_admins(message)
            regs = False
            return
        if regs == False:
            clear_registration()
        regs = True

        try:
            if input_number != "":
                number = input_number
                name = message.text
                input_number = ""
                next = bot.send_message(message.chat.id, "Введите сумму")
                bot.register_next_step_handler(next, registrations_main)
                return

            if (name != ""):
                if (number != ""):

                    if (int(message.text) >= 79000000000) & (int(message.text) <= 89999999999):
                        msg1 = bot.send_message(message.chat.id, "Введено слишком больше число!\nПовторите ввод")
                        bot.register_next_step_handler(msg1, registrations_main)
                        error_points = True

                    else:
                        error_points = False
                        points = points_value(int(message.text), io_manager.percent)

                        # Отправляем данные в базу данных

                        log.info_logs("Set amount: " + str(message.text) + " Points: " + str(points))
                        str_number = io_manager.number_processing(number)

                        add_id = 1

                        if io_manager.set_information_for_registration(str_number, name, points, add_id) is True:
                            # # Создание пользовательской таблицы и забивание времени
                            # io_manager.create_user_table(str_number)
                            # Записываем дату, время, баллы в таблицу индификатор которой время
                            io_manager.set_information_in_history(add_id, str_number, str(
                                datetime.datetime.fromtimestamp(message.date).strftime('%d.%m.%Y')), str(
                                datetime.datetime.fromtimestamp(message.date).strftime('%H:%M:%S')), points)

                            bot.send_message(message.chat.id,
                                             "Успешно!\n\nИмя: " + name + "\nНомер: " + str(number) +
                                             "\nБаллов: " + str(points) +
                                             "\n\nТекущий процент: " + str(io_manager.percent))
                            log.info_logs("Writing is successful")
                        regs = False


        except:
            log.error_logs("Error of registration: " + str(name) + "|" + str(number) + "|" + str(points))
            bot.send_message(message.chat.id, "Ошибка регистрации")
            regs = False

        try:
            if (name != ''):
                if (regs is True):
                    if(error_points is False):

                        str_number = io_manager.number_processing(message.text)
                        if io_manager.check_number(str_number) is False:
                            bot.send_message(message.chat.id, "Уже зарегистрирован")
                            usage_number = message.text
                            handle_message(message)
                            return
                        if (int(message.text) >= 79000000000) & (int(message.text) <= 89999999999):
                            in_number(message.text)
                            log.info_logs("Entered number: " + message.text)
                            next_steep = bot.send_message(message.chat.id, "Введите сумму")
                            bot.register_next_step_handler(next_steep, registrations_main)
                        else:
                            log.info_logs("Number is not correct: " + message.text)
                            msg1 = bot.send_message(message.chat.id, "Номер введен некорректно. Повторите ввод номера")
                            bot.register_next_step_handler(msg1, registrations_main)
                            return
        except:
            log.error_logs("Error in entered number")
            pause = bot.send_message(message.chat.id, "Повторите ввод номера")
            bot.register_next_step_handler(pause, registrations_main)
            e = sys.exc_info()[1]
            logs.error_logs(str(e))

        try:
            if (number == ''):
                if (regs is True):
                    in_name(message.text)
                    next_steep = bot.send_message(message.chat.id,
                                                  "Введите номер телефона \nв формате 7---------- или 8----------")
                    log.info_logs("Entered name: " + message.text)
                    bot.register_next_step_handler(next_steep, registrations_main)
        except:
            log.error_logs("Error of input name")
            pause = bot.send_message(message.chat.id, "Повторите ввод имени")
            bot.register_next_step_handler(pause, registrations_main)
    else:
        bot.send_message(message.chat.id, "У вас нет прав заходить сюда")
示例#7
0
def callback_key(call):
    # Глобальные переменнеые нужно убирать, с ними работать не будет
    global print_admins, check_history, check_sub_points, check_add_points
    if check_user(call.message.chat.id):
        chat_id = call.message.chat.id
        message_id = call.message.message_id
        io_manager = buffer.get_buffer(chat_id)

        if io_manager == None:
            bot.send_message(chat_id, "Бот не запущен")
            start_handler(call.message)
            return

        # Добавление админа
        if ((call.data == "add_admin") & (ad.check_main_admins(chat_id))):
            name_new_admin = bot.edit_message_text("Введите имя нового администратора", call.message.chat.id,
                                                   call.message.message_id)
            bot.register_next_step_handler(name_new_admin, add_admin_name)

        # Удаление админа
        if call.data == "delete_admin":
            name_delete_admin = bot.edit_message_text(
                "Введите имя администратора, которого хотите удалить.\n" + print_admins,
                call.message.chat.id, call.message.message_id)
            bot.register_next_step_handler(name_delete_admin, delete_admin_name)

        #Нажатие на кнопку "Изменить процент"
        if call.data == "change_proc":
            try:
                msg19 = bot.edit_message_text("Введите процент не превышающий 10", call.message.chat.id,
                                              call.message.message_id)

                bot.register_next_step_handler(msg19, new_percent)
            except:
                log.error_logs("Error of button сhange_proc")
                return

        #Нажатие на кнопку "Ввести номер"
        if call.data == "input_number":
            try:
                mess = bot.edit_message_text("Введите номер телефона \nв формате 7---------- или 8----------", chat_id,
                                             message_id)

                bot.register_next_step_handler(mess, handle_message)

            except:
                log.error_logs("Error in button input_number")
                return

        #Нажатие на кнопку "Регистрация"
        if call.data == "reg":
            try:
                mag1 = bot.edit_message_text("Введите имя", chat_id, message_id)
                bot.register_next_step_handler(mag1, registrations_main)

            except:
                log.error_logs("Error in button reg")
                return

        # Обработка кнопки показа последних действий
        if call.data == "history":
            try:
                msg13 = bot.edit_message_text("Введите количество операций не превышающих " + str(io_manager.add_id),
                                              call.message.chat.id, call.message.message_id,
                                              reply_markup=m.markup_back_to_info)
                if (check_history == False):
                    bot.register_next_step_handler(msg13, history)

                check_history = False
            except:
                log.error_logs("Error in button history")

        #Нажатие на кнопку "Добавить"
        if call.data == "add_points":
            try:
                msg2 = bot.edit_message_text("Введите сумму покупки", chat_id, message_id,
                                             reply_markup=m.markup_back_to_info)
                if (check_add_points == False):
                    bot.register_next_step_handler(msg2, add_points_two)
                check_add_points = False
            except:
                log.error_logs("Error in button add_point")

        #Нажатие на кнопку "Списать"
        if call.data == "sub_points":
            try:
                msg3 = bot.edit_message_text(
                    "Введите количество списываемых баллов не превышающих:  " + str(io_manager.point),
                    chat_id, message_id, reply_markup=m.markup_back_to_info)
                if (check_sub_points == False):
                    bot.register_next_step_handler(msg3, sub_points)
                check_sub_points = False
            except:
                log.error_logs("Error in button sub_points")

        #Нажатие на кнопку "Назад"
        if call.data == "back_to_info":
            bot.send_message(chat_id,
                             "Информация о клиенте:\n\n" + "Имя:  " + io_manager.name + "\nНомер:  " +
                             io_manager.number + "\nБаланс:  " +
                             str(io_manager.point), reply_markup=m.markup_change_points)
            check_history = True
            check_add_points = True
            check_sub_points = True
            bot.delete_message(chat_id, message_id)

        #Нажатие на кнопку "К информации о номере"
        if call.data == "to_info":
            bot.send_message(chat_id,
                             "Информация о клиенте:\n\n" + "Имя:  " + io_manager.name + "\nНомер:  " +
                             io_manager.number + "\nБаланс:  " +
                             str(io_manager.point), reply_markup=m.markup_change_points)
            bot.delete_message(chat_id, message_id)

    else:
        bot.send_message(call.message.chat.id, "У вас нет прав заходить сюда")