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)
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.")
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)
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.")
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.")
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, чтобы начать заново.")
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, "Вы ввели неверный код валюты. Попробуйте еще раз.")
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" )
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, чтобы начать заново.")
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)