Esempio n. 1
0
def settings(message):
    lang_num = language_define(message)
    markup = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    markup.row(take_phrase_1('languages_o', lang_num))
    markup.row(take_phrase_1('developing', lang_num))
    markup.row(take_phrase_1('back', lang_num))
    bot.send_message(message.chat.id, take_phrase_1('choose', lang_num), reply_markup=markup)
Esempio n. 2
0
def get_forecast(message, place, n, lang_num=None):
    if not lang_num: lang_num = language_define(message)
    name = name_define(n, lang_num)
    try:
        coords = get_coords(message, place)
        
        town = coords[0]
        if len(coords) == 3: latitude, longitude = coords[1:]

        if lang_num == 0: town = translate(town, lang_num)

        weather_inf = get_inf(lang_num, latitude, longitude)
        precipType, summary, search_term, inf = get_main_parts(n, lang_num, town, weather_inf, name)
        bot.send_message(message.chat.id, inf)

        thumbnail_url = get_photo(message, search_term)
        poem = get_poem(message, precipType, summary, search_term)
    except Exception as e:
        town = place
        poem = ''
        thumbnail_url = ''
        inf = '' 
        bot.send_message(message.chat.id, take_phrase_2('errors', 'top_error', lang_num))
         
    try:      
        check_user(message)
        check_user_all(message)
        query_add(message, name, town, inf, thumbnail_url, poem)    
    except Exception as e:
        report_error(e)

    weather_menu(message)
Esempio n. 3
0
def preparing_2(message):
    lang_num = language_define(message)
    ask_text = take_phrase_2('place_input', 'day_after_tomorrow', lang_num)
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    button_geo = types.KeyboardButton(text=take_phrase_1('geolocation', lang_num), request_location=True)
    keyboard.add(button_geo)
    sent = bot.reply_to(message, ask_text, reply_markup = keyboard)
    bot.register_next_step_handler(sent, weather_2)
Esempio n. 4
0
def start_menu(message):
    ID = message.from_user.id
    lang_num = language_define(message)
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    markup.row(take_phrase_1('menu', lang_num))
    markup.row(take_phrase_1('settings', lang_num))
    start_text = take_phrase_1('start', lang_num)
    
    bot.send_message(message.chat.id, start_text, reply_markup=markup)
Esempio n. 5
0
def users_queries_today(message):
    lang_num = language_define(message)
    text = take_phrase_2('statistic', 'stats_text_pq_today', lang_num)
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    markup.row(take_phrase_2('statistic', 'today_users', lang_num),
               take_phrase_2('statistic', 'today_requests', lang_num))
    markup.row(take_phrase_1('back_menu', lang_num),
               take_phrase_1('back_start', lang_num))
    bot.send_message(message.chat.id, text, reply_markup=markup)
Esempio n. 6
0
def preparing_0(message, data=None):
    if data: lang_num = 0 if 'Get' in data else 1
    else: lang_num = language_define(message)
        
    ask_text = take_phrase_2('place_input', 'today', lang_num)
    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    button_geo = types.KeyboardButton(text=take_phrase_1('geolocation', lang_num), request_location=True)        
    keyboard.add(button_geo)
    sent = bot.reply_to(message, ask_text, reply_markup = keyboard)
    bot.register_next_step_handler(sent, weather_0)
Esempio n. 7
0
def menu(message):
    lang_num = language_define(message)
    menu_text = take_phrase_1('menu_text', lang_num)

    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    markup.row(take_phrase_2('quests', 'weather', lang_num),
               take_phrase_2('quests', 'stats', lang_num))
    if lang_num == 1: markup.row('Игра в города👾')
    markup.row(take_phrase_1('back', lang_num))

    bot.send_message(message.chat.id, menu_text, reply_markup=markup)
Esempio n. 8
0
def stat_menu(message):
    lang_num = language_define(message)
    text = take_phrase_2('statistic', 'stats_text', lang_num)
    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    markup.row(take_phrase_2('statistic', 'today_users', lang_num),
               take_phrase_2('statistic', 'all_users', lang_num))
    markup.row(take_phrase_2('statistic', 'today_requests', lang_num),
               take_phrase_2('statistic', 'all_requests', lang_num))
    if lang_num == 1:
        markup.row('Рейтинг игроков🏆')
    markup.row(take_phrase_1('back_menu', lang_num),
               take_phrase_1('back_start', lang_num))
    bot.send_message(message.chat.id, text, reply_markup=markup)
Esempio n. 9
0
def get_query_today(message):
    lang_num = language_define(message)
    Time_d = date_time('date')
    queries = (make_query('''select count(*) from (select * from Queries where Time_d=?); ''', (Time_d, )))[0][0]
    queries_s = (make_query('''select count(*) from (select * from Queries_stat where Time_d=?); ''', (Time_d, )))[0][0]
    answer = take_phrase_2('stat_answers', 'requests_today', lang_num)+str(queries+queries_s)
    bot.send_message(message.chat.id, answer)

    try:
        query_add_stat(message, phrases['stat_db']['requests_today'], answer)
        check_user(message)
        check_user_all(message)
    except Exception as e:
        report_error(e)
Esempio n. 10
0
def weather_menu(message):
    lang_num = language_define(message)
    text = take_phrase_2('weather', 'weather_text', lang_num)

    markup = types.ReplyKeyboardMarkup(resize_keyboard=True)
    markup.row(take_phrase_2('weather', 'now', lang_num),
               take_phrase_2('weather', 'today', lang_num))
    markup.row(take_phrase_2('weather', 'tomorrow', lang_num),
               take_phrase_2('weather', 'day_after_tomorrow', lang_num))
    markup.row(take_phrase_2('weather', 'week', lang_num))
    markup.row(take_phrase_1('back_menu', lang_num),
               take_phrase_1('back_start', lang_num))

    bot.send_message(message.chat.id, text, reply_markup=markup)
Esempio n. 11
0
def get_users_all(message):
    lang_num = language_define(message)
    num_of_users = make_query(
        'select count(*) from (select Tel_ID from Users_new)')[0][0]

    answer = f"{take_phrase_2('stat_answers', 'users_all', lang_num)}{num_of_users}"
    bot.send_message(message.chat.id, answer)

    try:
        query_add_stat(message, phrases['stat_db']['users_all'], answer)
        check_user(message)
        check_user_all(message)
    except Exception as e:
        report_error(e)
Esempio n. 12
0
def get_query_all(message):
    lang_num = language_define(message)
    queries = (make_query('''select count(*) from (select * from Queries); '''))[0][0]
    queries_s = (make_query('''select count(*) from (select * from Queries_stat);'''))[0][0]

    answer = f"{take_phrase_2('stat_answers', 'requests_all', lang_num)}{queries+queries_s}"
    bot.send_message(message.chat.id, answer)

    try:
        query_add_stat(message, phrases['stat_db']['requests_all'], answer)
        check_user(message)
        check_user_all(message)
    except Exception as e:
        report_error(e)
Esempio n. 13
0
def weather_or_stat(message, address):
    lang_num = language_define(message)
    ask_text = take_phrase_1('weather_or_stat', lang_num)

    keyboard = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    keyboard.add(
        types.InlineKeyboardButton(
            text=take_phrase_2('quests', 'weather', lang_num),
            callback_data=take_phrase_2('quests', 'weather', lang_num) + '|' +
            (address if address else 'None')),
        types.InlineKeyboardButton(text=take_phrase_2('quests', 'stats',
                                                      lang_num),
                                   callback_data=take_phrase_2(
                                       'quests', 'stats', lang_num)))

    bot.send_message(message.chat.id, ask_text, reply_markup=keyboard)
Esempio n. 14
0
def get_poem(message, precipType, summary, search_term):
    lang_num = language_define(message)
    if lang_num == 1:
        ways = [[precipType, summary], ['', summary], [precipType, ''],
                [search_term, '']]

        for way in ways:
            try:
                poem = get_poem_text(message, *way)

                break
            except:
                continue
    else:
        poem = ''
    if poem == '':
        bot.send_message(message.chat.id,
                         take_phrase_2('errors', 'poem_error', lang_num))
    return poem
Esempio n. 15
0
def get_photo(message, search_term, n=1):
    try:
        req = requests.get(
            f'http://www.bing.com/images/search?q={search_term}&qs=n&form=QBLH&scope=images&sp=-1&pq={search_term}&sc=8-6&sk=&cvid={cvid}'
        )
        req.encoding = 'cp1251'
        soup = BeautifulSoup(req.text, 'html.parser')
        thumbnail_url = (soup.find_all('img')[n + 1]).get('src')

        bot.send_photo(message.chat.id, photo=thumbnail_url)
        return thumbnail_url

    except Exception as e:
        lang_num = language_define(message)
        n += 1
        if n == 6:
            bot.send_message(message.chat.id,
                             take_phrase_2('errors', 'photo_error', lang_num))
            return ''
        else:
            get_photo(message, search_term, n + 1)
Esempio n. 16
0
def get_users_today(message):
    lang_num = language_define(message)
    Time = date_time('date')

    query = make_query(
        '''select distinct Tel_ID from Users_All_new where Time=?; ''',
        (Time, ))

    people = set()
    for user in query:
        people.add(user[0])

    answer = f"{take_phrase_2('stat_answers', 'users_today', lang_num)}{len(people)}"
    bot.send_message(message.chat.id, answer)

    try:
        query_add_stat(message, phrases['stat_db']['users_today'], answer)
        check_user(message)
        check_user_all(message)
    except Exception as e:
        report_error(e)
Esempio n. 17
0
def text_receiving(message):
    t = message.text 
    ID = message.from_user.id
    lang_num = language_define(message)
    if t == 'Сейчас' or t == 'Now':
        preparing(message)
    elif t == 'Сегодня' or t == 'Today':
        preparing_0(message)
    elif t == 'Завтра' or t == 'Tomorrow':
        preparing_1(message)
    elif t == 'Послезавтра' or t == 'Day after tomorrow':
        preparing_2(message)
    elif t == 'Неделя' or t == 'Week':
        preparing_week(message)
    elif t == 'Кол-во пользователей за сегодня' or t == 'Number of users today':
        get_users_today(message)
    elif t == 'Кол-во пользователей за все время' or t == 'Number of all users':
        get_users_all(message)
    elif t == 'Кол-во запросов за сегодня' or t == 'Number of requests today':
        get_query_today(message)
    elif t == 'Кол-во запросов за все время' or t == 'Number of all requests':
        get_query_all(message)
    elif t == '⬅️Назад(Меню)' or t == 'Меню📋' or t == 'Menu📋' or t == '⬅️Back(Menu)':
        menu(message)
    elif t == 'Получить погоду🌤' or t == 'Get weather🌤':
        weather_menu(message)
    elif t == 'Получить статистику📈' or t == 'Get statistics📈':
        stat_menu(message)
    elif t == 'Игра в города👾':
        game(message)
    elif t == 'Рейтинг игроков🏆':
        top(message)
    elif t == 'English' or t == 'Русский' or t == 'English(en)' or t == 'Русский(ru)':
        languages_f(message)
    elif t == 'Настройки⚙️' or t == 'Settings⚙️' or t == '⬅️Back(Settings)' or t == '⬅️Назад(Настройки)':
        settings(message)
    elif t == 'Language🌏' or t == 'Язык🌏':
        languages_set(message)
    elif t == '⬅️Back' or t == '⬅️Назад' or t == '⬅️Назад(Начало)' or t == '⬅️Back(Start)':
        start_menu(message)
    elif t == 'Creator👨🏻‍💻' or t == 'Разработчик👨🏻‍💻':
        developing(message) 
    else:
        _list, address = text_message_processing(t, 'ru' if lang_num else 'en')
        if 'rus' in _list:
            languages_f(message, 'рус')
        elif 'en' in _list:
            languages_f(message, 'англ')
        elif 'developer' in _list:
            developing(message)
        elif 'game' in _list and language_define(message) == 1:
            game(message)
        elif 'top' in _list and language_define(message) == 1:
            top(message)
        elif 'lang' in _list:
            languages_set(message)
        elif 'settings' in _list:
            settings(message)
        elif _list:
            choosing(message, _list, address)
        else:
            bot.send_message(message.chat.id, take_phrase_1('n_u', lang_num)) 
            start_menu(message)
Esempio n. 18
0
def languages_set(message):
    lang_num = language_define(message)
    markup = types.ReplyKeyboardMarkup(row_width=1, resize_keyboard=True)
    markup.row('Русский', 'English')
    markup.row(take_phrase_1('back_settings', lang_num), take_phrase_1('back_start', lang_num))
    bot.send_message(message.chat.id, take_phrase_1('language', lang_num), reply_markup=markup)   
Esempio n. 19
0
def weather_week(message, adress=None):

    place = adress if adress else message.text
    lang_num = language_define(message)

    try:
        coords = get_coords(message, place)
        town = coords[0]
        if len(coords) == 3: latitude, longitude = coords[1:]

        if lang_num == 0: town = translate(town, lang_num)

        weather_inf = get_inf(lang_num, latitude, longitude)

        full_inf = ''
        date = datetime.date.today() - datetime.timedelta(days=1)

        type_str = take_character_1('type', lang_num)
        temperature_max_str = take_character_2('temperature', 'max', lang_num)
        temperature_min_str = take_character_2('temperature', 'min', lang_num)

        for n in range(8):
            date += datetime.timedelta(days=1)
            try:
                subjects = weather_inf['daily']['data'][n]

                summary = subjects['summary']

                keys_ = subjects.keys()
                precipType = subjects[
                    'precipType'] if 'precipType' in keys_ else ''
                if (lang_num == 1 and precipType):
                    precipType = translate(precipType)
                temperatureHigh = round(
                    5 / 9 * (subjects['temperatureHigh'] -
                             32)) if 'temperatureHigh' in keys_ else ''
                temperatureLow = round(
                    5 / 9 * (subjects['temperatureLow'] -
                             32)) if 'temperatureLow' in keys_ else ''
                inf = f'{date}, {town}:\n{summary}{type_str}{precipType}\
                        {"%s%s°C" % (temperature_max_str, temperatureHigh) if temperatureHigh else ""}\
                        {"%s%s°C" % (temperature_min_str, temperatureLow) if temperatureLow else ""}'

                keyboard = types.InlineKeyboardMarkup()
                keyboard.add(*[
                    types.InlineKeyboardButton(
                        text=word,
                        callback_data=f'{word}&{lang_num}&{town}&{date}')
                    for word in [take_phrase_1('more', lang_num)]
                ])
                bot.send_message(message.chat.id, inf, reply_markup=keyboard)
            except KeyError:
                inf = f'{date} {town}:\n{language_1("errors", "top_0_error", lang_num)}'
                bot.send_message(message.chat.id, inf)
            full_inf += inf

    except Exception as e:
        town = place
        full_inf = ''
        bot.send_message(message.chat.id,
                         take_phrase_2('errors', 'top_error', lang_num))

    try:
        check_user(message)
        check_user_all(message)
        query_add(message, 'Неделя', town, full_inf, '', '')
    except Exception as e:
        report_error(e)
    weather_menu(message)
Esempio n. 20
0
def weather(message, adress=None):

    place = adress if adress else message.text
    lang_num = language_define(message)

    try:
        coords = get_coords(message, place)
        town = coords[0]
        if len(coords) == 3: latitude, longitude = coords[1:]

        weather_inf = get_inf(lang_num, latitude, longitude)

        subjects = weather_inf['currently']

        summary = subjects['summary']
        humidity = round(subjects['humidity'] * 100)
        windSpeed = round(subjects['windSpeed'] * 0.447)
        windGust = round(subjects['windGust'] * 0.447)
        pressure = round(subjects['pressure'] * 0.75006)
        time = datetime.datetime.now(tz=None)
        time = str((time + datetime.timedelta(hours=3)
                    ) if lang_num == 1 else time).split('.')[0]
        current_time = take_phrase_2('weather', 'now', lang_num)
        time_name = take_character_2('time_all', 'time', lang_num)
        temperature_name = take_character_2('temperature', 'usual', lang_num)
        temperature_feeling_name = take_character_2('temperature', 'feeling',
                                                    lang_num)

        timezone, precipType_name, humidity_name, wind_name, wind_max_name, wind_unit, pressure_name, pressure_unit, visibility_name, visibility_unit = words(
            lang_num)

        if lang_num == 0: town = translate(town, lang_num)

        keys_ = subjects.keys()

        precipType = subjects['precipType'] if 'precipType' in keys_ else ''
        if lang_num == 1 and precipType: precipType = translate(precipType)

        temperature = round(
            5 / 9 *
            (subjects['temperature'] - 32)) if 'temperature' in keys_ else ''
        apparentTemperature = round(
            5 / 9 * (subjects['apparentTemperature'] -
                     32)) if 'apparentTemperature' in keys_ else ''

        visibility = round(subjects['visibility'] *
                           1.61, 1) if 'visibility' in keys_ else ''

        search_term = f'{town} {precipType}'

        inf = f'{current_time}, {town}:{time_name}{time}{timezone}\n{summary}{precipType_name}{precipType}\
                {humidity_name}{humidity}%{"%s%s°C" % (temperature_name, temperature) if temperature else ""}\
                {"%s%s°C" % (temperature_feeling_name, apparentTemperature) if apparentTemperature else ""}\
                {wind_name}{windSpeed}{wind_unit}{wind_max_name}{windGust}{wind_unit}\
                {pressure_name}{pressure}{pressure_unit}{visibility_name}{visibility}{visibility_unit}'

        bot.send_message(message.chat.id, inf)

        thumbnail_url = get_photo(message, search_term)
        poem = get_poem(message, precipType, summary, search_term)

    except Exception as e:
        town = place
        inf = ''
        thumbnail_url = ''
        poem = ''
        bot.send_message(message.chat.id,
                         take_phrase_2('errors', 'top_error', lang_num))

    try:
        check_user(message)
        check_user_all(message)
        query_add(message, 'Сейчас', town, inf, thumbnail_url, poem)
    except Exception as e:
        report_error(e)

    weather_menu(message)
Esempio n. 21
0
def not_understand(message):
    lang_num = language_define(message)
    bot.send_message(message.chat.id, take_phrase_1('n_u', lang_num))