Перейти до основного вмісту
Squeek
Як це виглядаєМожливостіАтмосфераПлатформиПриватністьБоти
UAEN
Завантажити
Як це виглядаєМожливостіАтмосфераПлатформиПриватністьБотиЗавантаження
На головну

Для розробників

Боти у Squeek

Бот — це акаунт, за який відповідає програма. Він є в пошуку, йому можна написати, його можна додати в групу чи канал. Тут — як створити бота з телефона й запустити його за кілька хвилин.

На цій сторінці

  1. Створити бота в застосунку
  2. Запустити бота на Node.js
  3. Команди й опис бота
  4. Виправити, видалити, поставити реакцію
  5. Надіслати повідомлення за посиланням
  6. Файли
  7. Кнопки під повідомленням
  8. Допис за розкладом
  9. Бот-модератор
  10. Бот без постійного сервера
  11. Постити в канал без бібліотеки

1Створити бота в застосунку

  1. Відкрийте «Профіль» → «Мої боти».
  2. Натисніть «Створити бота». Введіть ім’я — так бота бачитимуть у чатах, наприклад Погода, — і нікнейм: латиницею, обов’язково з bot наприкінці, наприклад weather_bot.
  3. Натисніть «Створити». З’явиться вікно з токеном — довгий рядок вигляду 7:a91f…:3c0d…. Натисніть «Поділитися» і надішліть його собі (в «Обране», на пошту — куди завгодно) або скопіюйте довгим натисканням.

Токен показується один раз

Це пароль бота: хто має токен, той пише від його імені. Не публікуйте його і не додавайте в git.

Бот уже існує: він є в пошуку як @weather_bot з позначкою «бот», йому можна написати, його можна додати в групу або канал.

2Запустити бота на Node.js

Програма, яка відповідатиме за бота, працює на вашому комп’ютері або сервері. Потрібен Node.js і бібліотека squeek-bot.

bash
mkdir my-bot && cd my-bot && npm init -y && npm install squeek-bot

Створіть файл bot.js:

bot.js
const { SqueekBot } = require('squeek-bot');

const bot = new SqueekBot('7:a91f…:3c0d…'); // токен із застосунку

bot.on('message', async (msg) => {
  console.log(msg.from.name, ':', msg.text);
  if (msg.text === '/hi') await msg.reply('Привіт! 🐀');
});

bot.on('connected', () => console.log('бот онлайн'));

bot.start();
bash
node bot.js

Тепер напишіть боту /hi із застосунку — він відповість.

  • message — вхідне повідомлення. У msg.from.name — хто написав, у msg.text — текст, msg.reply(text) відповідає в той самий чат.
  • connected — бот під’єднався до сервера.
  • bot.start() — відкриває з’єднання і починає отримувати повідомлення.

3Команди й опис бота

Людина, яка вперше відкрила чат із ботом, не знає, що йому писати. Тому в бота є опис — рядок під іменем — і меню команд: його видно на профілі бота, а в полі вводу воно випадає, щойно набрати «/». Чат із ботом відкривається кнопкою «Почати», яка надсилає /start.

  1. У «Мої боти» натисніть іконку олівця біля бота.
  2. Впишіть опис і команди — по одній на рядок, у вигляді /weather — прогноз на завтра.
  3. Збережіть. Меню одразу видно всім, хто відкриє чат із ботом.

Те саме може зробити сама програма на старті — зручно, коли команд багато або вони змінюються разом із кодом:

js
bot.on('connected', async () => {
  await bot.setDescription('Розповідає погоду. Спитайте /weather.');
  await bot.setCommands([
    { command: 'weather', description: 'Прогноз на завтра' },
    { command: 'rain', description: 'Чи буде дощ' },
  ]);
});

bot.on('message', async (msg) => {
  if (msg.text === '/start') await msg.reply('Привіт! /weather — прогноз на завтра.');
});

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

4Виправити, видалити, поставити реакцію

Бот може переписати власне повідомлення замість того, щоб слати друге — зручно для «виконується → готово». Так само може видалити своє повідомлення для всіх і поставити емодзі на чуже.

js
bot.on('message', async (msg) => {
  if (msg.text !== '/backup') return;

  await msg.react('👀');
  const id = await bot.send(msg.chat.id, 'Резервна копія: виконується…');

  await makeBackup();
  await bot.editMessage(msg.chat.id, id, 'Резервна копія: готово ✅');
});

5Надіслати повідомлення за посиланням

Найпростіший спосіб змусити бота щось написати — вебхук: посилання з секретом, на яке достатньо зробити один POST. Ні входу, ні токена, ні бібліотеки — підходить для cron, скрипта чи будь-якої системи, яка вміє викликати URL.

  1. У «Мої боти» натисніть на іконку посилання біля бота.
  2. Скопіюйте посилання — воно показується один раз. Воно має вигляд https://api.squeek.net/hooks/7/….
Бот пише вам
curl https://api.squeek.net/hooks/7/<секрет> \
  -H 'content-type: application/json' \
  -d '{"text":"Бекап завершено"}'

Повідомлення з’явиться у вашому чаті з ботом. Щоб бот написав у канал, додайте ?chat=@адреса_каналу — бот має бути там адміністратором:

Бот пише в канал
curl 'https://api.squeek.net/hooks/7/<секрет>?chat=@my_channel' \
  -H 'content-type: application/json' \
  -d '{"text":"Нова версія вже на сайті"}'

Посилання — це і є доступ

Хто має посилання, той пише від імені бота. Якщо воно потрапило не туди — створіть нове в застосунку, старе одразу перестане працювати.

6Файли

Приватний чат — лише з тим, хто його відкрив

Бот ніколи не пише першим: чат починає людина. Якщо вона видалила чат із ботом або заблокувала його, бот мовчить — доки вона не напише знову. Це стосується і тексту, і файлів.

Бот може надіслати файл у будь-який чат, де він є. Шифрування бібліотека бере на себе.

js
const chart = await fs.promises.readFile('cpu.png');

await bot.sendFile(chatId, { name: 'cpu.png', data: chart, mimeType: 'image/png' }, 'За останню годину');

Файл цілком тримається в памʼяті, поки надсилається, — це нормально для графіка чи логу й погано для фільму.

7Кнопки під повідомленням

Бот може повісити під повідомленням до пʼяти кнопок. Напис бачать усі, а data повертається лише боту — натискання не зберігається й нікому іншому не видно.

js
await bot.send(chatId, 'Перезапустити сервер?', {
  buttons: [
    { label: 'Так', data: 'restart:yes' },
    { label: 'Не зараз', data: 'restart:no' },
  ],
});

bot.on('button', async (press) => {
  if (press.data !== 'restart:yes') return;

  await bot.send(press.chatId, press.from.name + ' підтвердив, перезапускаю…');
  await restart();
});

Сервер звіряє data з переліком кнопок самого повідомлення, тож боту приходить лише те, що він сам написав.

8Допис за розкладом

Текст можна написати зараз, а опублікувати колись — наприклад, привітання о шостій ранку, коли ніхто не тримає телефон у руках. Працює лише в каналах, зокрема в їхніх обговореннях (вкладках каналу). Чергу переглядають щохвилини.

js
const id = await bot.schedule(chatId, 'Доброго ранку 🐀', new Date('2026-10-01T06:00:00Z'));

await bot.scheduled(chatId);   // що ще не вийшло
await bot.unschedule(id);      // забрати назад

9Бот-модератор

Зробіть бота адміністратором або модератором групи чи каналу — і він зможе те саме, що людина того ж рангу: мутити, банити, видаляти повідомлення. І з тими самими межами: до тих, хто вище рангом, він не дотягнеться.

js
bot.on('message', async (msg) => {
  if (!looksLikeSpam(msg.text)) return;

  await bot.deleteMessage(msg.id);
  await bot.mute(msg.chat.id, msg.from.id, 60, 'спам');
});
  • bot.mute(chatId, userId, minutes, reason?) — мовчання на час.
  • bot.ban(chatId, userId, reason?) — вихід без повернення.
  • bot.unrestrict(chatId, userId) — зняти мут або бан.
  • bot.deleteMessage(messageId) — прибрати повідомлення для всіх.

10Бот без постійного сервера

Щоб бот чув повідомлення, зазвичай потрібен процес, який працює цілодобово. Якщо такого немає, бот може назвати адресу — і сервер сам робитиме POST на неї з кожним повідомленням. Тоді бот живе будь-де, де є HTTP: на безкоштовному хостингу, у функції, у вашому домашньому сервері.

js
const { url, secret } = await bot.setWebhook('https://my-bot.example/squeek');
// secret збережіть — ним підписано кожну доставку
обробник, наприклад express
app.post('/squeek', express.raw({ type: '*/*' }), async (req, res) => {
  const msg = await bot.readWebhook(req.body.toString(), req.get('x-squeek-signature'), SECRET);

  res.sendStatus(200);          // спершу відповідь, потім робота

  if (msg?.text === '/hi') await msg.reply('Привіт! 🐀');
});

readWebhook перевіряє підпис і розшифровує повідомлення. Якщо підпис не збігається, він кидає помилку — чужий запит до вашого коду не дійде.

11Постити в канал без бібліотеки

Якщо бот лише публікує в канал, бібліотека не потрібна. Додайте бота адміністратором каналу і зробіть два HTTP-запити з будь-якої мови. У приватних чатах і групах так не вийде — там потрібна бібліотека.

Токен складається з трьох частин, розділених двокрапкою: botId:…:secret. Для входу потрібні перша (botId) і третя (secret).

Отримати accessToken
curl https://api.squeek.net/auth/bot \
  -H 'content-type: application/json' \
  -d '{"botId":7,"secret":"3c0d…"}'

У відповіді буде accessToken. Далі — повідомлення в канал, де chatId — ідентифікатор каналу:

Надіслати повідомлення
curl https://api.squeek.net/messages \
  -H "authorization: Bearer <accessToken>" \
  -H 'content-type: application/json' \
  -d '{"chatId":17,"content":"Привіт, канале"}'

Опитування — той самий запит із полем poll:

Надіслати опитування
curl https://api.squeek.net/messages \
  -H "authorization: Bearer <accessToken>" \
  -H 'content-type: application/json' \
  -d '{"chatId":17,"content":"Коли зустрічаємось?","poll":{"question":"Коли зустрічаємось?","options":["П’ятниця","Субота"]}}'
Squeek

Теплий месенджер для близьких розмов і тихих вечорів.

Продукт

ЗавантаженняМожливостіБоти

Документи

ПриватністьУмови

Написати нам

adminsqueek@gmail.com
UAEN

© 2026 Squeek. Усі права застережено.

Зроблено з теплом із самої нори.