Телеграм бот не отвечает с асинхронной функцией
import telebot
from datetime import datetime
import asyncio
import time
bot = telebot.TeleBot('токен', parse_mode=None)
url = 'https://v6.exchangerate-api.com/v6/a7928b1d176d82503c016f69/latest/USD'
get_data = requests.get(url)
data = get_data.json()
uah = data['conversion_rates']['UAH']
rub = data['conversion_rates']['RUB']
byn = data['conversion_rates']['BYN']
uah = round(uah, 2)
rub = round(rub, 2)
byn = round(byn, 2)
print(uah)
keyboard1 = telebot.types.ReplyKeyboardMarkup()
keyboard1.row('$')
@bot.message_handler(commands=['start'])
def send_welcome(message):
bot.send_message(message.chat.id, 'Привет, я бот для конвертации валют и информации валюты, крипты', reply_markup=keyboard1)
@bot.message_handler(content_types=['text'])
def send_dollar(message):
if message.text == '$':
bot.send_message(message.chat.id,'1 USD - '+str(uah)+' UAH (Украинская гривна) \n'+'1 USD - '+str(rub) + ' RUB (Российский рубль)\n'+'1 USD - '+str(byn)+'BYN (Белорусский рубль)')
async def update_json():
while True:
#delta = int((datetime.datetime(2020, 9, 17) - datetime.datetime.now()).total_seconds())
#string = f'In {delta} seconds'
string = 'hello'
print(string)
await asyncio.sleep(3)
loop = asyncio.get_event_loop()
task = loop.create_task(update_json())
loop.run_until_complete(task)
bot.polling()
Ответы (1 шт):
Автор решения: Мотя
→ Ссылка
Запустил Ваш код (добавив import requests) и в консоли начался беспрерывный вывод "hello". Происходит это из-за цикла while в коде:
async def update_json():
while True:
У программы нет выхода из этого цикла, а соответственно она не может обработать сообщение в Telegram. Если убрать эту строку, то бот полноценно функционирует. В этом ли заключалась проблема?