예제 #1
0
def add_place_location(message):
    user = db_middleware.get_user(message.chat.id)
    if user['action'] == 'A':
        if message.content_type == 'location':
            data = user['action_data']
            data['addplace']['location'] = [
                message.location.longitude, message.location.latitude
            ]
            db_middleware.set_action_data(
                (db_middleware.get_user(user['user_id'])), data)
            bot.send_message(chat_id=user['user_id'],
                             text="Хотите добавить примечение?",
                             reply_markup=YES_NO_REPLY)
            db_middleware.change_action(user, 'C')
        else:
            bot.send_message(
                chat_id=user['user_id'],
                text="Отправьте геолокацию, не текстовое сообщение")
    elif user['action'] == 'C':
        if 'да' in message.text.lower():
            db_middleware.next_step(user)
            bot.send_message(chat_id=user['user_id'],
                             text="Напишите примечание")
            db_middleware.change_action(user, 'A')
        else:
            db_middleware.next_step(user)
            add_place_note(message)
예제 #2
0
def main_menu(message):
    user = db_middleware.get_user(message.chat.id)
    db_middleware.set_step(user, 'main')
    db_middleware.change_action(user, 'A')
    db_middleware.set_action_data((db_middleware.get_user(user['user_id'])),
                                  None)
    bot.send_message(message.chat.id,
                     text='Вы в главном меню',
                     reply_markup=MAIN_MENU)
예제 #3
0
def send_instructions(message):
    if db_middleware.get_user(message.chat.id) is None:
        db_middleware.create_user(message.chat.id)
        bot.send_message(message.chat.id,
                         text='Добро пожаловать!',
                         reply_markup=MAIN_MENU)
    else:
        main_menu(message)
예제 #4
0
def callback_handler(callback_query):
    user = db_middleware.get_user(callback_query.message.chat.id)
    ans = callback_query.data
    if ans == 'y':
        db_middleware.change_action(user, 'C')
        get_places(callback_query.message)
    else:
        main_menu(callback_query.message)
예제 #5
0
def add_place_note(message):
    user = db_middleware.get_user(message.chat.id)
    data = user['action_data']
    if user['action'] == 'A':
        data['addplace']['note'] = message.text
        db_middleware.set_action_data(
            (db_middleware.get_user(user['user_id'])), data)

    bot.send_message(chat_id=user['user_id'],
                     text="<b>Вот как будет выглядеть ваша запись:</b>",
                     parse_mode='HTML')
    db_middleware.next_step(user)
    send_places(user, [data['addplace']])
    bot.send_message(chat_id=user['user_id'],
                     text="<b>Cохранить место?</b>",
                     reply_markup=YES_NO_REPLY,
                     parse_mode='HTML')
예제 #6
0
def coronavirus_info(message):
    user = db_middleware.get_user(message.chat.id)
    data = db_middleware.get_films()
    text = ""
    for film in data:
        text += f'<b>{film["title"]}</b>\n'
        text += f'{film["url"]}\n\n'
    bot.send_message(chat_id=user['user_id'],
                     text=text,
                     parse_mode='HTML',
                     disable_web_page_preview=True)
    main_menu(message)
예제 #7
0
def add_place_title(message):
    user = db_middleware.get_user(message.chat.id)
    if user['action'] == 'A':
        db_middleware.set_action_data(
            ((db_middleware.get_user(user['user_id']))),
            {'addplace': {
                'title': message.text
            }})
        bot.send_message(chat_id=user['user_id'],
                         text="Хотите добавить фото?",
                         reply_markup=YES_NO_REPLY)
        db_middleware.change_action(user, 'C')
    elif user['action'] == 'C':
        if 'да' in message.text.lower():
            db_middleware.next_step(user)
            db_middleware.change_action(user, 'A')
            bot.send_message(chat_id=user['user_id'], text="Отправьте фото")
        else:
            db_middleware.next_step(user)
            bot.send_message(chat_id=user['user_id'],
                             text="Хотите добавить геолокацию места?",
                             reply_markup=YES_NO_REPLY)
예제 #8
0
def get_places(message):
    user = db_middleware.get_user(message.chat.id)
    if user['action'] == 'A':
        db_middleware.set_step(user, 'getplace')
        data = db_middleware.get_places(user, True)
        count = data['count']
        places = data['places']
        send_places(user, places)
        if count > 5:
            db_middleware.set_action_data(
                (db_middleware.get_user(user['user_id'])),
                {'getplace': {
                    'count': count,
                    'offset': 5
                }})
            bot.send_message(chat_id=user['user_id'],
                             text='Хотите вывести больше мест?',
                             reply_markup=YES_NO_INLINE)
        else:
            bot.send_message(chat_id=user['user_id'],
                             text='<b>У вас больше нет добавленных мест</b>',
                             parse_mode='HTML')
            main_menu(message)
    else:
        offset = user['action_data']['getplace']['offset']
        count = user['action_data']['getplace']['count']
        data = db_middleware.get_places(user, False, offset)
        places = data['places']
        send_places(user, places)
        if offset + 5 >= count:
            bot.send_message(chat_id=user['user_id'],
                             text='<b>У вас больше нет добавленных мест</b>',
                             parse_mode='HTML')
            main_menu(message)
        else:
            bot.send_message(chat_id=user['user_id'],
                             text='Хотите вывести больше мест?',
                             reply_markup=YES_NO_INLINE)
예제 #9
0
def add_place_photo(message):
    user = db_middleware.get_user(message.chat.id)
    if user['action'] == 'A':
        if message.content_type == 'photo':
            data = user['action_data']
            try:
                file_id = message.photo[-1].file_id
                data['addplace']['photo'] = file_id
                db_middleware.set_action_data(
                    (db_middleware.get_user(user['user_id'])), data)
                bot.send_message(chat_id=user['user_id'],
                                 text="Хотите добавить геолокацию места?",
                                 reply_markup=YES_NO_REPLY)
                db_middleware.change_action(user, 'C')
            except:
                bot.send_message(
                    chat_id=user['user_id'],
                    text="<b>Что-то пошло не так. Отправьте фото ещё раз</b>",
                    parse_mode='HTML')
        else:
            bot.send_message(chat_id=user['user_id'],
                             text="Отправьте фото, не текстовое сообщение")
    elif user['action'] == 'C':
        if 'да' in message.text.lower():
            db_middleware.next_step(user)
            db_middleware.change_action(user, 'A')
            bot.send_message(
                chat_id=user['user_id'],
                text="Отправьте геолокацию\n (Отправляйте геолокацию,"
                " выбранную вручную, не с помощью поиска/предложенных мест. Такие сообщения пока не поддерживаются ботом.)"
            )
        else:
            db_middleware.next_step(user)
            bot.send_message(chat_id=user['user_id'],
                             text="Хотите добавить примечание?",
                             reply_markup=YES_NO_REPLY)
예제 #10
0
def coronavirus_info(message):
    user = db_middleware.get_user(message.chat.id)
    db_middleware.set_step(user, 'coronavirus')
    data = db_middleware.get_coronavirus_stat()
    text = ""
    for region in data:
        text += f'<b>{region["region"]}</b>\n'
        text += f'Заражений: {region["infected_all"]} (+{region["infected_add"]})\n'
        text += f'Смертей: {region["deaths_all"]} (+{region["deaths_add"]})\n'
        text += f'Выздоровело: {region["recovered_all"]} (+{region["recovered_add"]})\n'
        text += '\n\n'
    bot.send_message(chat_id=user['user_id'], text=text, parse_mode='HTML')
    bot.send_message(
        chat_id=user['user_id'],
        text='Хотите получить последние новости, связанные с коронавирусом?',
        reply_markup=YES_NO_INLINE)
예제 #11
0
def callback_handler(callback_query):
    user = db_middleware.get_user(callback_query.message.chat.id)
    ans = callback_query.data
    if ans == 'y':
        data = db_middleware.get_coronavirus_news()
        text = ""
        for new in data:
            text += f'<b><i>{new["title"]}</i></b>\n'
            text += f'{new["text"]}\n'
            #text += f'{new["url"]}'
            text += '\n\n\n'
        bot.send_message(chat_id=user['user_id'],
                         text=text,
                         parse_mode='HTML',
                         disable_web_page_preview=True)
    main_menu(callback_query.message)
예제 #12
0
def add_place_confirm(message):
    user = db_middleware.get_user(message.chat.id)
    data = user['action_data']
    if 'да' in message.text.lower():
        try:
            db_middleware.add_place(user, data)
            data['completed'] = True
            db_middleware.set_action_data(user, data)
            bot.send_message(chat_id=user['user_id'],
                             text="<b>Место сохранено</b>",
                             parse_mode='HTML')
        except:
            bot.send_message(
                chat_id=user['user_id'],
                text=
                "<b>Что-то пошло не так. Информация о месте не была сохранена</b>",
                parse_mode='HTML')
            main_menu(message)
    else:
        bot.send_message(chat_id=user['user_id'],
                         text="<b>Информация о месте не была сохранена</b>",
                         parse_mode='HTML')
    main_menu(message)
예제 #13
0
def add_place_start(message):
    user = db_middleware.get_user(message.chat.id)
    bot.send_message(chat_id=user['user_id'], text="Введите название места")
    db_middleware.set_step(user, 'addplace_title')
예제 #14
0
                                  None)
    bot.send_message(message.chat.id,
                     text='Вы в главном меню',
                     reply_markup=MAIN_MENU)


### Блок AddPlace ###
@bot.message_handler(func=lambda message: message.text == 'Добавить место' and
                     message.content_type == 'text')
def add_place_start(message):
    user = db_middleware.get_user(message.chat.id)
    bot.send_message(chat_id=user['user_id'], text="Введите название места")
    db_middleware.set_step(user, 'addplace_title')


@bot.message_handler(func=lambda message: db_middleware.get_user(
    message.chat.id)['step_id'] == 2)
def add_place_title(message):
    user = db_middleware.get_user(message.chat.id)
    if user['action'] == 'A':
        db_middleware.set_action_data(
            ((db_middleware.get_user(user['user_id']))),
            {'addplace': {
                'title': message.text
            }})
        bot.send_message(chat_id=user['user_id'],
                         text="Хотите добавить фото?",
                         reply_markup=YES_NO_REPLY)
        db_middleware.change_action(user, 'C')
    elif user['action'] == 'C':
        if 'да' in message.text.lower():
            db_middleware.next_step(user)