Для розробників
Боти у Squeek
Бот — це акаунт, за який відповідає програма. Він є в пошуку, йому можна написати, його можна додати в групу чи канал. Тут — як створити бота з телефона й запустити його за кілька хвилин.
Створити бота в застосунку
- Відкрийте «Профіль» → «Мої боти».
- Натисніть «Створити бота». Введіть ім’я — так бота бачитимуть у чатах, наприклад
Погода, — і нікнейм: латиницею, обов’язково зbotнаприкінці, наприкладweather_bot. - Натисніть «Створити». З’явиться вікно з токеном — довгий рядок вигляду
7:a91f…:3c0d…. Натисніть «Поділитися» і надішліть його собі (в «Обране», на пошту — куди завгодно) або скопіюйте довгим натисканням.
Бот уже існує: він є в пошуку як @weather_bot з позначкою «бот», йому можна написати, його можна додати в групу або канал.
Запустити бота на Node.js
Програма, яка відповідатиме за бота, працює на вашому комп’ютері або сервері. Потрібен Node.js і бібліотека squeek-bot.
mkdir my-bot && cd my-bot && npm init -y && npm install squeek-botСтворіть файл 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();node bot.jsТепер напишіть боту /hi із застосунку — він відповість.
message— вхідне повідомлення. Уmsg.from.name— хто написав, уmsg.text— текст,msg.reply(text)відповідає в той самий чат.connected— бот під’єднався до сервера.bot.start()— відкриває з’єднання і починає отримувати повідомлення.
Команди й опис бота
Людина, яка вперше відкрила чат із ботом, не знає, що йому писати. Тому в бота є опис — рядок під іменем — і меню команд: його видно на профілі бота, а в полі вводу воно випадає, щойно набрати «/». Чат із ботом відкривається кнопкою «Почати», яка надсилає /start.
- У «Мої боти» натисніть іконку олівця біля бота.
- Впишіть опис і команди — по одній на рядок, у вигляді
/weather — прогноз на завтра. - Збережіть. Меню одразу видно всім, хто відкриє чат із ботом.
Те саме може зробити сама програма на старті — зручно, коли команд багато або вони змінюються разом із кодом:
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 — прогноз на завтра.');
});Виправити, видалити, поставити реакцію
Бот може переписати власне повідомлення замість того, щоб слати друге — зручно для «виконується → готово». Так само може видалити своє повідомлення для всіх і поставити емодзі на чуже.
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, 'Резервна копія: готово ✅');
});Надіслати повідомлення за посиланням
Найпростіший спосіб змусити бота щось написати — вебхук: посилання з секретом, на яке достатньо зробити один POST. Ні входу, ні токена, ні бібліотеки — підходить для cron, скрипта чи будь-якої системи, яка вміє викликати URL.
- У «Мої боти» натисніть на іконку посилання біля бота.
- Скопіюйте посилання — воно показується один раз. Воно має вигляд
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":"Нова версія вже на сайті"}'Файли
Бот може надіслати файл у будь-який чат, де він є. Шифрування бібліотека бере на себе.
const chart = await fs.promises.readFile('cpu.png');
await bot.sendFile(chatId, { name: 'cpu.png', data: chart, mimeType: 'image/png' }, 'За останню годину');Допис за розкладом
Текст можна написати зараз, а опублікувати колись — наприклад, привітання о шостій ранку, коли ніхто не тримає телефон у руках. Працює лише в каналах, зокрема в їхніх обговореннях (вкладках каналу). Чергу переглядають щохвилини.
const id = await bot.schedule(chatId, 'Доброго ранку 🐀', new Date('2026-10-01T06:00:00Z'));
await bot.scheduled(chatId); // що ще не вийшло
await bot.unschedule(id); // забрати назадБот-модератор
Зробіть бота адміністратором або модератором групи чи каналу — і він зможе те саме, що людина того ж рангу: мутити, банити, видаляти повідомлення. І з тими самими межами: до тих, хто вище рангом, він не дотягнеться.
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)— прибрати повідомлення для всіх.
Бот без постійного сервера
Щоб бот чув повідомлення, зазвичай потрібен процес, який працює цілодобово. Якщо такого немає, бот може назвати адресу — і сервер сам робитиме POST на неї з кожним повідомленням. Тоді бот живе будь-де, де є HTTP: на безкоштовному хостингу, у функції, у вашому домашньому сервері.
const { url, secret } = await bot.setWebhook('https://my-bot.example/squeek');
// secret збережіть — ним підписано кожну доставку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('Привіт! 🐀');
});Постити в канал без бібліотеки
Якщо бот лише публікує в канал, бібліотека не потрібна. Додайте бота адміністратором каналу і зробіть два HTTP-запити з будь-якої мови. У приватних чатах і групах так не вийде — там потрібна бібліотека.
Токен складається з трьох частин, розділених двокрапкою: botId:…:secret. Для входу потрібні перша (botId) і третя (secret).
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":["П’ятниця","Субота"]}}'