Не работает парсер или апи в телегам боте на сервере

Рейтинг: 0Ответов: 0Опубликовано: 15.02.2023

Возникла такая ошибка, что не работает телеграм бот на сервере, когда на локалке все отлично работает, не знаю из-за чего это происходит, потому что никаких ошибок не выдает.

import asyncio
from aiogram import Bot, Dispatcher, types, executor
from db import Datebase
from config import BOT_TOKEN, API_KEY
from apscheduler.schedulers.asyncio import AsyncIOScheduler

import requests 
import datetime
from bs4 import BeautifulSoup
import lxml
import random

bot = Bot(BOT_TOKEN)
dp = Dispatcher(bot)

db = Datebase('database.db')

@dp.message_handler(commands=['start'])
async def start(msg: types.Message) -> None:
    if msg.chat.type == 'private':
        if not db.user_exists(msg.from_user.id):
            db.add_user(msg.from_user.id)
        await msg.answer('Добро пожаловать!')
@dp.message_handler()
async def sms2(msg: types.Message) -> None:
    users = db.get_users()
    for user in users:
        try:        
            URL= f'https://api.openweathermap.org/data/2.5/weather?lat=53.9&lon=27.5667&appid={API_KEY}&units=metric&lang=ru'
            headers = {
                'accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.7',
                'user-agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/110.0.0.0 Safari/537.36 Edg/110.0.1587.41',
            }
            r = requests.get(url=URL, headers=headers)
            data = r.json()

            city = data['name']
            cur_weath = round(float(data['main']['temp']))
            feel_weth = round(float(data['main']['feels_like']))
            humidity = data['main']['humidity']
            wind = data['wind']['speed']
            description = data['weather'][0]['description']
            sunrise = datetime.datetime.fromtimestamp(data['sys']['sunrise']).strftime('%H:%M')
            sunset = datetime.datetime.fromtimestamp(data['sys']['sunset']).strftime('%H:%M')

            rub = requests.get('https://www.nbrb.by/api/exrates/rates/RUB?parammode=2', headers=headers)
            data1 = rub.json()
            price_rub = round(float(data1['Cur_OfficialRate']), 2)

            usd = requests.get('https://www.nbrb.by/api/exrates/rates/USD?parammode=2', headers=headers)
            data2 = usd.json()
            price_usd = round(float(data2['Cur_OfficialRate']), 2)

            eur = requests.get('https://www.nbrb.by/api/exrates/rates/EUR?parammode=2', headers=headers)
            data3 = eur.json()
            price_eur = round(float(data3['Cur_OfficialRate']), 2)

            req = requests.get('https://wikiphile.ru/570-fraz-o-motivacii/?ysclid=le2s2e8ouu459711332' ,headers=headers)
            
            soup = BeautifulSoup(req.text, 'lxml')

            lst = soup.find('ol').find_all('li')
            random_index = random.randint(0, len(lst) - 1)
            await bot.send_message(user[0], text=
                f'---------------{datetime.datetime.now().strftime("%d-%m-%Y")}---------------\n'\
                '\n'\
                '-----Погода-----\n'\
                f'Город: {city}\n'\
                f'Описание: {description}\n'\
                f'Текущая погода: {cur_weath}°\n'\
                f'Ощущается как: {feel_weth}°\n'\
                f'Скорость ветра: {wind} м/с \n'\
                f'Влажность: {humidity}\n'\
                f'Рассвет: {sunrise}\n'\
                f'Закат: {sunset}\n'\
                '\n'\
                f'-----Курсы валют-----\n'\
                f'Доллар\n'\
                f'Курс по НБРБ: {price_usd} BYN\n'\
                f'Евро\n'\
                f'Курс по НБРБ: {price_eur} BYN\n'\
                f'Российский рубль(за 100р)\n'\
                f'Курс по НБРБ: {price_rub} BYN\n'\
                '\n'\
                f'-----Рандомная цитата-----\n'\
                f'{lst[random_index].text}'
                )
            if int(user[1]) != 1:
                db.set_active(user[0], 1)
        except:
            db.set_active(user[0], 0)



if __name__ == '__main__':
    scheduler = AsyncIOScheduler(timezone='Europe/Minsk')
    scheduler.add_job(sms2, trigger='cron', hour=17, minute=20, start_date=datetime.datetime.now(), kwargs={'msg':types.Message, }, misfire_grace_time=3600 ) 
    scheduler.start()
    executor.start_polling(dp, skip_updates=True)

Ответы

Ответов пока нет.