Exemple #1
0
def send_mirror_message_handler(bot, update):
    """ Функция отправляет пользователю его же сообщение. """
    answ_text = '{first_name}, ты написал: {msg}'.format(
        first_name=update.message.chat.first_name,
        msg=update.message.text,
    )
    send_text_to_user(update, answ_text)
Exemple #2
0
def cities_stop_comand_handler(bot, update):
    """ Функция останавливает игру в города, удаляет БД пользователя. """
    username = update.message.chat.username
    user_filename = os.path.join(cities_data, f'{username}_cities_base.json')
    cithelp.delete_user_db(user_filename)
    answ_text = 'Как скажешь, в следующий раз начнем сначала'
    send_text_to_user(update, answ_text)
Exemple #3
0
def start_comand_handler(bot, update):
    """ Функция отправляет ответ на команду /start. """
    answ_text = """
Я умею:
1. /weather Москва - узнать температуру в городе
2. /wordcount привет, как дела? - узнать количество слов в введенном сообщении
3. А можете просто мне написать и я отвечу вам вашим же сообщением :-)
"""
    send_text_to_user(update, answ_text)
Exemple #4
0
def cities_comand_handler(bot, update, args):
    """ Функция игры в города, отправляет город в ответ. """
    username = update.message.chat.username
    user_filename = os.path.join(cities_data, f'{username}_cities_base.json')
    cities_base = os.path.join(cities_data, user_filename)

    # если пользователь не ввел название города, то выход
    user_city = cithelp.concat_words(args)
    if not user_city:
        answ_text = 'Необходимо указать город. Пример: /cities Москва'
        send_text_to_user(update, answ_text)
        return

    # создаем и/или загружаем файл с базой городов для пользователя
    user_db_obj = cithelp.prepare_user_db(cities_base, user_filename,
                                          cithelp.get_etalon_cities_list())

    # заполняем рабочие переменные сведениями из файла игрока
    cities = user_db_obj['cities']
    last_symbol = user_db_obj['symbol']

    # выполняем проверки для переменной user_city
    uc_validation = cithelp.user_city_validation(user_city, cities,
                                                 last_symbol)
    if uc_validation is not None:
        answ_text = cithelp.user_city_validation(user_city, cities,
                                                 last_symbol)
        send_text_to_user(update, answ_text)
        return

    # получаеv город от бота или None
    city = cithelp.get_city_from_bot(cities, user_city)
    if city is not None:
        bot_city_last_symbol = city[-2] if cithelp.is_invalid_end_symbol(
            city) else city[-1]
        cithelp.save_user_db(user_filename, cities, bot_city_last_symbol)
        answ_text = f'{city}, твоя очередь.'
        send_text_to_user(update, answ_text)
        return

    # если мы дошли сюда, то у бота кончились города
    cithelp.delete_user_db(user_filename)
    answ_text = 'Я больше не знаю городов, давай начнем сначала'
    send_text_to_user(update, answ_text)
Exemple #5
0
def weather_comand_handler(bot, update, args):
    """ Функция отправляет температуру в указанном городе. """
    city = args[0] if args else None

    if city is None:
        answ_text = 'Необходимо указать город. Пример: /weather Москва'
        send_text_to_user(update, answ_text)
        return

    resp = owm_helpers.get_weather(city)

    if resp is not None:
        answ_text = owm_helpers.process_owm_response(resp)
        send_text_to_user(update, answ_text)
        return

    answ_text = 'Ошибка соединения с сервером openweathermap.org'
    send_text_to_user(update, answ_text)
Exemple #6
0
def wordcount_comand_handler(bot, update, args):
    """ Функция отправляет количество слов в пользовательском сообщении. """
    word_count = wordhelp.get_word_count(args)
    answ_text = wordhelp.get_answer_text(word_count)
    send_text_to_user(update, answ_text)