def check_prices(): users = session.query(User).all() scrapper = Scrapper() items = session.query(Item).all() for item in items: scrapper.go_to(item.link) price = scrapper.get_price() title = scrapper.get_title() if not item.title: item.title = title session.commit() if item.price: change_percentage = (abs(price - item.price) / item.price) * 100.0 if change_percentage >= 3: item.price = price session.commit() markup = InlineKeyboardMarkup( [InlineKeyboardButton('Check', url=item.link)]) for u in users: try: bot.send_message( u.tg_id, '<code>{}</code> price changed'.format(title), parse_mode=ParseMode.HTML, reply_markup=markup) except Exception as e: config.logger.error( 'Error sending a message: {}'.format(e)) else: item.price = price session.commit()