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