예제 #1
0
def ent_month(message):
    if message.text in ('Янв', 'Фев', 'Мар', 'Апр', 'Май', 'Июн', 'Июл', 'Авг', 'Сен', 'Окт','Ноя','Дек'):
        dbworker.set_property(message.chat.id, message.text, "month")
        markup = types.ReplyKeyboardMarkup()
        itembtn1 = types.KeyboardButton('2010')
        itembtn2 = types.KeyboardButton('2011')
        itembtn3 = types.KeyboardButton('2012')
        itembtn4 = types.KeyboardButton('2013')
        itembtn5 = types.KeyboardButton('2014')
        itembtn6 = types.KeyboardButton('2015')
        itembtn7 = types.KeyboardButton('2016')
        itembtn8 = types.KeyboardButton('2017')
        itembtn9 = types.KeyboardButton('2018')
        itembtn10 = types.KeyboardButton('2019')
        itembtn11 = types.KeyboardButton('2020')



        markup.add(itembtn1, itembtn2, itembtn3, itembtn4, itembtn5, itembtn6, itembtn7, itembtn8, itembtn9,
                   itembtn10, itembtn11)
        bot.send_message(message.chat.id, "Выберите год:", reply_markup=markup)
        dbworker.set_state(message.chat.id, config.States.S_ENTER_YEAR.value)
    else:
        bot.send_message(message.chat.id, "Вы ввели неверный месяц. Попробуйте еще раз.")
        dbworker.set_state(message.chat.id, config.States.S_ENTER_MONTH.value)
예제 #2
0
def cmd_day(message):
    dbworker.del_state(str(message.chat.id) + 'day')
    if message.text.lower().strip() == '/yesterday':
        #day = 1
        bot.send_message(
            message.chat.id,
            "Ok, we've specified the date of statistics. It's time to go further. \n"
            "Do you want to know things about /regions or /countries?\n"
            "You could also type /info to know more about me.\n"
            "Type /reset to start anew.")
        dbworker.set_property(str(message.chat.id) + 'day',
                              'yesterday')  # запишем день в базу
        dbworker.set_state(message.chat.id,
                           config.States.S_COUNTRY_OR_REGION.value)
    elif message.text.lower().strip() == '/today':
        # day = 0
        bot.send_message(
            message.chat.id,
            "Ok, we've specified the date for statistics. It's time to go further. \n"
            "Do you want to know things about /regions or /countries?\n"
            "You could also type /info to know more about me.\n"
            "Type /reset to start anew.")

        dbworker.set_property(str(message.chat.id) + 'day',
                              'today')  # запишем день в базу
        dbworker.set_state(message.chat.id,
                           config.States.S_COUNTRY_OR_REGION.value)
    else:
        bot.send_message(
            message.chat.id,
            "Seems like you've already got acquainted with me.\n"
            "Now you gotta specify the date for statistics.\n"
            "I have information for /yesterday and /today \n"
            "To recollect what we are doing now type /info.\n"
            "Type /reset to start anew.")
예제 #3
0
def day(message):
    if message.text in ('1', '2', '3', '4', '5', '6','7', '8', '9','10','11','12','13','14','15','16','17','18',
                         '19', '20', '21', '22', '23', '24', '25', '26', '27', '28',
                         '29', '30', '31'):
        #currency = messages.text
        dbworker.set_property(message.chat.id, message.text, "day")

        bot.reply_to(message, 'Введите месяц')
        #dbworker.set_property(messages.chat.id, currency, "code")
        markup = types.ReplyKeyboardMarkup()
        itembtn1 = types.KeyboardButton('Янв')
        itembtn2 = types.KeyboardButton('Фев')
        itembtn3 = types.KeyboardButton('Мар')
        itembtn4 = types.KeyboardButton('Апр')
        itembtn5 = types.KeyboardButton('Май')
        itembtn6 = types.KeyboardButton('Июн')
        itembtn7 = types.KeyboardButton('Июл')
        itembtn8 = types.KeyboardButton('Авг')
        itembtn9 = types.KeyboardButton('Сен')
        itembtn10 = types.KeyboardButton('Окт')
        itembtn11 = types.KeyboardButton('Ноя')
        itembtn12 = types.KeyboardButton('Дек')


        markup.add(itembtn1, itembtn2, itembtn3, itembtn4, itembtn5, itembtn6, itembtn7, itembtn8, itembtn9,
                   itembtn10, itembtn11, itembtn12)
        bot.send_message(message.chat.id, "Выберите месяц:", reply_markup=markup)
        dbworker.set_state(message.chat.id, config.States.S_ENTER_MONTH.value)
    else:
        bot.send_message(message.chat.id, "Вы ввели неверную дату. Попробуйте еще раз.")
        dbworker.set_state(message.chat.id, config.States.S_ENTER_DAY.value)
예제 #4
0
def country_or_region(message):
    global country
    if message.text.lower().strip() == '/countries':
        country = 0
        bot.send_message(
            message.chat.id, "Ok, you want to get statistics by country. \n"
            "Enter the list of countries delimited with a comma or just a single country.\n"
            "Type /listcountries to get the list of available fields.\n"
            "You could also type /info to recollect what we are doing now.\n"
            "Type /reset to start anew.")
        dbworker.set_state(message.chat.id,
                           config.States.S_ENTER_COUNTRY_OR_REGION.value)
        dbworker.set_property(str(message.chat.id) + 'country', '0')
    elif message.text.lower().strip() == '/regions':
        country = 1
        bot.send_message(
            message.chat.id, "Ok, you want to get statistics by region. \n"
            "Enter the list of regions delimited with a comma or just a single region.\n"
            "Type /listregions to get the list of available fields.\n"
            "You could also type /info to recollect what we are doing now.\n"
            "Type /reset to start anew.")

        print(message.chat.id)
        dbworker.set_state(message.chat.id,
                           config.States.S_ENTER_COUNTRY_OR_REGION.value)

        dbworker.set_property(str(message.chat.id) + 'country', '1')
    else:
        bot.send_message(
            message.chat.id,
            "Something has gone wrong! Type either countries or regions.\n"
            "Type /info to recollect what we are doing now.\n"
            "Type /reset to start anew.")
예제 #5
0
def country_or_region(message):
    dbworker.del_state(str(message.chat.id) + 'country') # Если в базе когда-то был выбор стран, удалим (мы же новый пишем)
    if message.text.lower().strip() == '/countries':
        # country = 0
        bot.send_message(message.chat.id, "Ok, you want to get statistics by country. \n"
                                          "Enter the list of countries delimited with a comma or just a single country.\n"
                                          "Type /listcountries to get the list of available fields.\n"
                                          "You could also type /info to recollect what we are doing now.\n"
                                          "Type /reset to start anew.")
        dbworker.set_state(message.chat.id, config.States.S_ENTER_COUNTRY_OR_REGION.value)
        dbworker.set_property(str(message.chat.id)+'country', 'countries')  #запишем выбор стран в базу
    elif message.text.lower().strip() == '/regions':
        # country = 1
        bot.send_message(message.chat.id, "Ok, you want to get statistics by region. \n"
                                          "Enter the list of regions delimited with a comma or just a single region.\n"
                                          "Type /listregions to get the list of available fields.\n"
                                          "You could also type /info to recollect what we are doing now.\n"
                                          "Type /reset to start anew.")

        dbworker.set_state(message.chat.id, config.States.S_ENTER_COUNTRY_OR_REGION.value)
        dbworker.set_property(str(message.chat.id) + 'country', 'regions') #запишем выбор регионов в базу

    else:
        bot.send_message(message.chat.id, "Something has gone wrong! Type either countries or regions.\n"
                                          "Type /info to recollect what we are doing now.\n"
                                          "Type /reset to start anew.")
예제 #6
0
def cmd_country_or_region(message):
    dbworker.del_state(str(message.chat.id) + 'content')
    if message.text.lower().strip() == '/doc':
        bot.send_message(
            message.chat.id, "Хорошо, я могу прислать статью.\n"
            "Чтобы посмотреть, о чём у меня есть информация, напиши /content.\n"
            "После этого выбери интересующие тебя темы и пришли мне их через запятую.\n"
            "Можешь написать /info, если забыл, как всё это работает.\n"
            "Чтобы начать заново, напиши /reset")

        dbworker.set_property(str(message.chat.id) + 'content',
                              'doc')  # запишем день в базу
        dbworker.set_state(message.chat.id,
                           config.States.S_ENTER_TYPE_OF_CONTENT.value)

    elif message.text.lower().strip() == '/vid':
        bot.send_message(
            message.chat.id, "Хорошо, я могу прислать видео.\n"
            "Чтобы посмотреть, о чём у меня есть информация, напиши /content.\n"
            "После этого выбери интересующие тебя темы и пришли мне их через запятую.\n"
            "Можешь написать /info, если забыл, как всё это работает.\n"
            "Чтобы начать заново, напиши /reset")

        dbworker.set_property(str(message.chat.id) + 'content', 'vid')
        dbworker.set_state(message.chat.id,
                           config.States.S_ENTER_TYPE_OF_CONTENT.value)

    else:
        bot.send_message(
            message.chat.id, "Что-то пошло не так. Введи /doc или /vid.\n"
            "Напиши /info, чтобы я напомнил тебе, как я работаю.\n"
            "Напиши /reset, чтобы начать заново.")
예제 #7
0
def code_day(message):
    if message.text.upper() in codes:
        cur = message.text
        currency = cur.upper()
        print(currency)
        bot.reply_to(message, 'Введите число на которое хотите узнать курс: ')
        dbworker.set_property(message.chat.id, currency, "code")
        dbworker.set_state(message.chat.id, config.States.S_ENTER_DAY.value)
    else:
        bot.send_message(message.chat.id, "Вы ввели неверный код валюты. Попробуйте еще раз.")
예제 #8
0
def cmd_list_countries(message):
    dbworker.del_state(str(message.chat.id) + 'list_countries')
    countries = [x.strip() for x in re.split(',', message.text)]
    country = dbworker.get_current_state(str(message.chat.id) + 'country')
    bot.send_message(message.chat.id, 'Thank you, I\'m checkin\' your info.')
    x = stat()['Country']
    if country.strip() == 'regions':
        lst = [i for i in list(x[:8]) if i != '']
    else:
        lst = [i for i in list(x[8:231]) if i != '']

    errors = [i for i in countries if i not in lst]

    if len(errors) == 0:
        if countries != list():
            bot.send_message(
                message.chat.id,
                "Ok, Now you gotta specify the information you need. \n"
                "Enter the list of fields\n"
                "Type /listfields to get the list of available fields.\n"
                "You could type /info to recollect what we are doing now.\n"
                "Type /reset to start anew.")
            dbworker.set_property(
                str(message.chat.id) + 'list_countries', ', '.join(countries))
            dbworker.set_state(message.chat.id,
                               config.States.S_ENTER_FIELDS_LIST.value)
        else:
            bot.send_message(
                message.chat.id,
                "Something has gone wrong! Enter the list of countries/regions properly"
            )
    else:
        bot.send_message(
            message.chat.id,
            "There\'s a number of countries/regions with typos or something that\'s not in our list.\n"
            "Here they are:" + ", ".join(errors) + "\n"
            "To get lists of available regions/countries use /listcountries or /listregions"
        )
예제 #9
0
def cmd_day(message):
    dbworker.del_state(str(message.chat.id) + 'field')
    if message.text.lower().strip() == '/math':
        bot.send_message(
            message.chat.id, "Ок, математика. Давай дальше. \n"
            "Что тебе прислать? Статейку или видео?\n"
            "Для статьи напиши /doc, для видео - /vid.\n"
            "Не забудь, что /info показывает, что я могу делать.\n"
            "Напиши /reset, чтобы начать заново.")
        dbworker.set_property(str(message.chat.id) + 'field',
                              'math')  # запишем день в базу
        dbworker.set_state(message.chat.id, config.States.S_TYPE_OF_INFO.value)
    elif message.text.lower().strip() == '/python':
        bot.send_message(
            message.chat.id, "Хорошо, давай по питону. \n"
            "Что тебе прислать? Статейку или видео?\n"
            "Для статьи напиши /doc, для видео - /vid.\n"
            "Не забудь, что /info показывает, что я могу делать.\n"
            "Напиши /reset, чтобы начать заново.")

        dbworker.set_property(str(message.chat.id) + 'field',
                              'python')  # запишем день в базу
        dbworker.set_state(message.chat.id, config.States.S_TYPE_OF_INFO.value)
    elif message.text.lower().strip() == '/ml':
        bot.send_message(
            message.chat.id, "Ага, машинное обучение. \n"
            "Что тебе прислать? Статейку или видео?\n"
            "Для статьи напиши /doc, для видео - /vid.\n"
            "Не забудь, что /info показывает, что я могу делать.\n"
            "Напиши /reset, чтобы начать заново.")
        dbworker.set_property(str(message.chat.id) + 'field',
                              'ml')  # запишем день в базу
        dbworker.set_state(message.chat.id, config.States.S_TYPE_OF_INFO.value)
    else:
        bot.send_message(
            message.chat.id, "Я не очень понял твой запрос.\n"
            "Сейчас тебе нужно выбрать, о чём ты хочешь получить информацию.\n"
            "Я могу прислать тебе информацию по математике, питону или машинному обучению. \n"
            "Напиши /math, /python или /ml.\n"
            "Не забудь, что /info показывает, что я могу делать.\n"
            "Напиши /reset, чтобы начать заново.")
예제 #10
0
def cmd_list_of_content(message):
    dbworker.del_state(str(message.chat.id) + 'list_of_content')
    if dbworker.get_current_state(str(message.chat.id) + 'field') == 'math' and \
            dbworker.get_current_state(str(message.chat.id) + 'content') == 'doc':
        list_of_content = [
            x.strip().lower() for x in re.split(',', message.text)
        ]
        bot.send_message(message.chat.id, 'Секунду, проверяю...')
        x = math_parsing()
        lst = [i for i in x.keys()]

        errors = [i for i in list_of_content if i not in lst]

        if len(errors) == 0:
            if list_of_content != list():
                bot.send_message(
                    message.chat.id,
                    "Хорошо. Вы выбрали темы, которые Вам интересны.\n"
                    "Теперь Вам нужно выбрать подтему, чтобы я мог прислать статью.\n"
                    "Через пару секунд снизу появятся список этих самых подтем.\n"
                    "Пришлите мне их через запятую.")
                time.sleep(5)
                for element in list_of_content:
                    bot.send_message(
                        message.chat.id,
                        "Вы выбрали следующую тему: " + element.title() +
                        "\n\n" + "- " + "\n- ".join(x[element].keys()))

                dbworker.set_property(
                    str(message.chat.id) + 'list_of_content',
                    ', '.join(list_of_content))
                dbworker.set_state(message.chat.id,
                                   config.States.S_ENTER_SUBTOPICS_LIST.value)
            else:
                bot.send_message(message.chat.id,
                                 'Введите список тем правильно!')
        else:
            bot.send_message(
                message.chat.id, "Ты где-то ошибся.\n"
                "Скорее всего здесь: " + ", ".join(errors) + "\n"
                "Чтобы посмотреть, как нужно вводить необходимую информацию, напиши /content"
            )

    elif dbworker.get_current_state(str(message.chat.id) + 'field') == 'python' and \
            dbworker.get_current_state(str(message.chat.id) + 'content') == 'doc':
        bot.send_message(
            message.chat.id,
            "Хорошо. Вы выбрали темы, которые Вам интересны.\n"
            "Теперь пришлите количество статей от 1 до 3")

        list_of_content = [
            x.strip().lower() for x in re.split(',', message.text)
        ]
        dbworker.set_property(
            str(message.chat.id) + 'list_of_content',
            ', '.join(list_of_content))
        dbworker.set_state(message.chat.id,
                           config.States.S_ENTER_SUBTOPICS_LIST.value)

    elif dbworker.get_current_state(str(message.chat.id) + 'field') == 'ml' and \
            dbworker.get_current_state(str(message.chat.id) + 'content') == 'doc':
        bot.send_message(
            message.chat.id,
            "Хорошо. Вы выбрали темы, которые Вам интересны.\n"
            "Теперь пришлите количество статей от 1 до 3")

        list_of_content = [
            x.strip().lower() for x in re.split(',', message.text)
        ]
        dbworker.set_property(
            str(message.chat.id) + 'list_of_content',
            ', '.join(list_of_content))
        dbworker.set_state(message.chat.id,
                           config.States.S_ENTER_SUBTOPICS_LIST.value)

    elif dbworker.get_current_state(str(message.chat.id) + 'content') == 'vid':
        bot.send_message(
            message.chat.id,
            "Хорошо. Вы выбрали темы, которые Вам интересны.\n"
            "Теперь пришлите количество статей от 1 до 3")

        list_of_content = [
            x.strip().lower() for x in re.split(',', message.text)
        ]
        dbworker.set_property(
            str(message.chat.id) + 'list_of_content',
            ', '.join(list_of_content))
        dbworker.set_state(message.chat.id,
                           config.States.S_ENTER_SUBTOPICS_LIST.value)