Kwadrat PL Telegram
Telegram-бот для оренди в Польщі

Хай дім у Польщі знайдеться сам

Kwadrat PL збирає свіжі оголошення з OLX, Otodom і Morizon в один Telegram-бот. Підпишіться на пошук — нові квартири й кімнати надійдуть просто в чат, раніше за інших.

Відкрити бота в Telegram Без реєстрації · 5 мов · всередині Telegram
БезкоштовноПрямі оголошення, без агентствОновлення ~5 хвилинAI-розбір + анти-скам

Чому Kwadrat PL

Пошук по 3 майданчиках одразу

Квартири, кімнати й подобово з OLX, Otodom і Morizon. Однакові оголошення з різних сайтів об'єднуються — без дублів у стрічці.

Миттєві сповіщення

Підпишіться на свій пошук — нове відповідне житло надходить у чат за хвилини. Тихі години вночі та пауза командою /off.

Справедлива ціна й анти-скам

Бейдж «нижче/вище ринку району» за нашими даними та попередження про підозріло дешеві оголошення — типову приманку шахраїв.

AI-розбір оголошення

Одна кнопка: переклад оголошення вашою мовою, вижимка головного й оцінка ризику шахрайства за текстом.

Калькулятор заїзду

Скільки грошей потрібно на старті: оренда, czynsz, media, кауція та комісія — рахуємо все одразу, без сюрпризів.

Гайди для орендаря

Як повернути кауцію (з готовим шаблоном претензії), договір без пасток, чек-лист огляду та готові фрази власнику польською.

Як це працює

  1. 1

    Відкрийте бота

    Натисніть кнопку й запустіть Kwadrat PL у Telegram — застосунок відкриється просто в чаті.

  2. 2

    Налаштуйте пошук

    Виберіть місто, тип оренди, ціну та фільтри. Результат оновлюється миттєво.

  3. 3

    Отримуйте нове першими

    Підпишіться — і свіжі оголошення надходитимуть у чат раніше, ніж їх розберуть.

Як це виглядає

Пошук, справедлива ціна й повна вартість входу — усе всередині Telegram.

Головний екран Kwadrat PL: пошук оренди житла в 8 містах Польщі
Список квартир на оренду з фото, ціною та бейджем «нижче ринку»
Картка оголошення: вартість входу — оренда й кауція — і джерело

Віджет на домашній екран iPhone

Скільки відповідних квартир і свіжі ціни — просто на екрані, не відкриваючи Telegram. Через безкоштовний застосунок Scriptable, без оплат App Store і акаунта розробника.

Віджет Kwadrat PL на домашньому екрані iPhone: число відповідних квартир і ціни оренди

Як встановити

  1. Установіть безкоштовний застосунок Scriptable з App Store.
  2. Напишіть нашому боту команду /widget — він надішле ваш особистий токен.
  3. У Scriptable натисніть «+», видаліть вміст і вставте код віджета (кнопка нижче).
  4. Впишіть свій токен у рядок TOKEN замість PASTE_TOKEN_HERE.
  5. Натисніть ▶ унизу — з'явиться превʼю віджета.
  6. На домашньому екрані: довгий тап → «+» → Scriptable → виберіть розмір → додайте. Потім довгий тап по віджету → «Змінити віджет» → у полі Script виберіть цей скрипт.
Показати код віджета
// ===========================================================================
// Kwadrat PL — виджет для Scriptable (iOS). Настоящий виджет на домашнем экране
// без App Store и Apple Developer. Данные берёт с нашего сервера по личному
// виджет-токену (команда /widget в @KwadratPLBot).
//
// Установка:
//   1. Поставьте бесплатное приложение Scriptable из App Store.
//   2. Новый скрипт → вставьте весь этот файл.
//   3. Впишите свой токен в TOKEN ниже (получить: /widget в боте).
//   4. Домашний экран → виджет Scriptable (small или medium) → этот скрипт.
// Поддерживает small, medium и экран блокировки. Тап открывает Mini App.
// Примечание: код намеренно без логического "или" — некоторые iOS-вставки в
// Scriptable теряют этот символ и ломают строку с config.widgetFamily.
// ===========================================================================

const TOKEN = "PASTE_TOKEN_HERE";
const STATE_URL = "https://kwadratpl-46-224-220-94.sslip.io/api/widget/state";

// ── брендовые цвета ──
const BG = new Color("#17212b");
const ACCENT = new Color("#3aaee0");
const WHITE = new Color("#e7edf3");
const MUTED = new Color("#93a4b4");

function zl(n) {
  if (!n && n !== 0) return "";
  return String(n).replace(/\B(?=(\d{3})+(?!\d))/g, " ") + " zł";
}

async function fetchState() {
  const req = new Request(STATE_URL);
  req.headers = { Authorization: "Bearer " + TOKEN };
  req.timeoutInterval = 12;
  return await req.loadJSON();
}

function header(w, s) {
  const row = w.addStack();
  row.centerAlignContent();
  const t = row.addText("KWADRAT");
  t.textColor = ACCENT;
  t.font = Font.heavySystemFont(13);
  row.addSpacer();
  const c = row.addText(String(s.matchingListings));
  c.textColor = WHITE;
  c.font = Font.heavySystemFont(17);
}

function build(s) {
  const w = new ListWidget();
  w.backgroundColor = BG;
  w.setPadding(14, 14, 14, 14);
  const fam = config.widgetFamily ? config.widgetFamily : "medium";

  if (!s) {
    const t = w.addText("KWADRAT");
    t.textColor = ACCENT; t.font = Font.heavySystemFont(14);
    w.addSpacer(6);
    const e = w.addText("Нет связи или токен неверный. Обновите /widget в боте.");
    e.textColor = MUTED; e.font = Font.systemFont(11);
    e.lineLimit = 3;
    return w;
  }

  header(w, s);
  w.addSpacer(2);
  const sub = w.addText("подходящих · " + s.newMatching + " новых за сутки");
  sub.textColor = MUTED; sub.font = Font.systemFont(10);

  if (fam !== "small") {
    w.addSpacer(9);
    const all = s.topListings ? s.topListings : [];
    const list = all.slice(0, fam === "large" ? 6 : 3);
    if (list.length === 0) {
      const e = w.addText("Нет подходящих объявлений. Настройте подписку в боте.");
      e.textColor = MUTED; e.font = Font.systemFont(11); e.lineLimit = 2;
    }
    list.forEach(function (l) {
      const row = w.addStack();
      row.centerAlignContent();
      const p = row.addText(zl(l.price));
      p.textColor = WHITE; p.font = Font.mediumSystemFont(12);
      row.addSpacer();
      const place = l.district ? l.district : (l.city ? l.city : "");
      const d = row.addText(place);
      d.textColor = MUTED; d.font = Font.systemFont(12);
      w.addSpacer(4);
    });
  }

  w.addSpacer();
  const ts = s.lastUpdatedAt ? s.lastUpdatedAt : "";
  const upd = ts.replace("T", " ").slice(11, 16);
  const foot = w.addText(upd ? "обновлено " + upd : "Kwadrat PL");
  foot.textColor = MUTED; foot.font = Font.systemFont(9);

  let tapUrl = "https://t.me/KwadratPLBot";
  if (s.botUrl) tapUrl = s.botUrl;
  if (s.openUrl) tapUrl = s.openUrl;
  w.url = tapUrl;
  w.refreshAfterDate = new Date(Date.now() + 15 * 60 * 1000);
  return w;
}

let state = null;
try { state = await fetchState(); } catch (e) { state = null; }
const widget = build(state);

if (config.runsInWidget) {
  Script.setWidget(widget);
} else {
  await widget.presentMedium();
}
Script.complete();

Як користуватися

  • Тап по віджету відкриває застосунок.
  • Віджет оновлюється за розкладом iOS (приблизно раз на 15–30 хвилин) — це обмеження всіх віджетів, не тільки нашого.
  • Свіжі квартири все одно приходять миттєво звичайним сповіщенням бота.

Міста Польщі

Оренда квартир і кімнат у 8 містах Польщі:

ВаршаваКраківВроцлавГданськПознаньЛодзьЗакопанеБілосток

Часті запитання

Це безкоштовно?
Так, повністю. Пошук, сповіщення, гайди та калькулятор — без плати й без реєстрації.
Звідки оголошення?
Ми збираємо публічні оголошення з OLX, Otodom і Morizon та оновлюємо їх кожні кілька хвилин. Однакові лоти з різних сайтів об'єднуються.
Що таке AI-розбір?
Кнопка в картці оголошення: перекладає текст вашою мовою, робить коротку вижимку й оцінює ризик шахрайства за описом.
Якими мовами працює?
Українська, російська, білоруська, польська та англійська. Мова перемикається просто в застосунку.
Як зрозуміти, що ціна справедлива?
Бот рахує медіанну ціну за м² по району й типу житла зі своїх даних і показує, наскільки оголошення дешевше або дорожче за ринок.
Чи потрібно встановлювати застосунок?
Ні. Kwadrat PL працює всередині Telegram як Mini App — нічого ставити не потрібно.
Чи є віджет для iPhone?
Так. Через безкоштовний застосунок Scriptable можна поставити на домашній екран віджет із числом відповідних квартир і свіжими цінами — без оплат App Store. Покрокова інструкція вище.

Хай дім знайдеться!

Відкрийте Kwadrat PL і підпишіться на свій пошук — нове житло надійде саме.

Відкрити бота в Telegram