@MarianaSE

Как обновить данные?

Привет! Написал достаточно незамысловатого бота в телеграм -
spoiler
import telebot
import datetime
import pandas as pd

TOKEN = 'токен'
bot = telebot.TeleBot(TOKEN)

now = datetime.datetime.now()

def times():
    timenow = str(now.year) + "." + str(now.month) + "." + str(now.day) + " " + str(now.hour) + ":" + str(now.minute) + ":" + str(now.second)
    return timenow

time = times()

def get_curr_rates(curr_code='RUB'):
    df = pd.read_html('http://www.finanz.ru/valyuty/v-realnom-vremeni',
                      encoding='utf-8')[1] \
           .dropna(axis=1)
    df.columns = ['curr_pair','bid','call','close','pct','abs_val','time']
    df = df.loc[df['curr_pair'].str.contains(r'\/{}'.format(curr_code))]
    df['curr'] = df['curr_pair'].str.split('/').str[0]
    num_cols = ['bid','call','close']
    df[num_cols] = df[num_cols].apply(pd.to_numeric, errors='coerce')
    return df.set_index('curr')['bid']

rub = get_curr_rates(curr_code='RUB')

usd = rub['USD']/10**4
eur = rub['EUR']/10**4
gbp = rub['GBP']/10**4
jpy = rub['JPY']/10**4
cny = rub['CNY']/10**4
chf = rub['CHF']/10**4

@bot.message_handler(commands=['start'])
def start(message):
    sent = bot.send_message(message.chat.id, 'Привет, '+ str(message.from_user.first_name) + '! Чтобы узнать список доступных команд введите воспользуйтесь командой /help')

@bot.message_handler(commands=['help'])
def start(message):
    sent = bot.send_message(message.chat.id, 'Список доступных команд :\n\n1."/usd" - Курс доллара.\n2."/eur" - Курс евро.\n3."/gbp" - Курс Фунта.\n4."/jpy" - Курс Иены.\n5."/cny" - Курс Юани.\n6."/chf" - Курс Франка.')

@bot.message_handler(commands=['usd'])
def start(message):
    sent = bot.send_message(message.chat.id, 'Стоимость 1 Доллара на момента запроса ( ' + str(time)  + ' ) - ' + str(usd) + ' Рублей')

@bot.message_handler(commands=['eur'])
def start(message):
    sent = bot.send_message(message.chat.id, 'Стоимость 1 Евро на момента запроса ( ' + str(time)  + ' ) - ' + str(eur) + ' Рублей')

@bot.message_handler(commands=['gbp'])
def start(message):
    sent = bot.send_message(message.chat.id, 'Стоимость 1 Фунта на момента запроса ( ' + str(time)  + ' ) - ' + str(gbp) + ' Рублей')

@bot.message_handler(commands=['jpy'])
def start(message):
    sent = bot.send_message(message.chat.id, 'Стоимость 1 Иены на момента запроса ( ' + str(time)  + ' ) - ' + str(jpy) + ' Рублей')

@bot.message_handler(commands=['cny'])
def start(message):
    sent = bot.send_message(message.chat.id, 'Стоимость 1 Юани на момента запроса ( ' + str(time)  + ' ) - ' + str(cny) + ' Рублей')

@bot.message_handler(commands=['chf'])
def start(message):
    sent = bot.send_message(message.chat.id, 'Стоимость 1 Франка на момента запроса ( ' + str(time)  + ' ) - ' + str(chf) + ' Рублей')

bot.polling(none_stop=True, interval=0)

Есть огромная проблема - вылюту и время он получает при запуске файла и ВСЕ. Вроде как должен обновлять их, но не хочет. Уже долгое время не могу понять, как решить это недоразумение. Заранее спасибо.

P.S. Я не так давно начал изучать питон. Если найдется столь благородный человек, что скинет решение этого недоразумение - добавьте, пожалуйста, комментарии к коду или небольшое объяснение. Буду очень благодарен за это.
  • Вопрос задан
  • 255 просмотров
Решения вопроса 1
Djaler
@Djaler
Сеньор-помидор
Самое напрашивающееся решение - вызывать функцию get_curr_rates непосредственно в хендлерах
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы