Учебник

Как сделать AI-ассистента в Slack и Discord за вечер без программиста

Ваши менеджеры тратят часы на ответы в чатах, а клиенты ждут. Разбираем, как собрать AI-бота в Slack и Discord через Make.com за вечер без кода. Получите готовую схему: бот отвечает в треде, видит историю диалога, работает на OpenAI. Никаких программистов и полугодовых курсов.

Макс Космов··5 мин чтения

Ваши менеджеры тратят по 3-4 часа в день на ответы в Slack и Discord. Половина вопросов повторяется - «где прайс?», «какие сроки?», «есть ли скидка?». Клиенты ждут, сотрудники выгорают. А вы платите за время, которое уходит на копипасту.

Выход - AI-ассистент, который отвечает в треде по упоминанию. Собирается за вечер через Make.com, без единой строки кода. Работает и в Slack, и в Discord. В статье - пошаговая схема от создания приложения до теста в реальном канале.

Создаём Slack-приложение - учётную запись бота

Начнём с регистрации бота в Slack. Это как создать нового пользователя-робота.

Шаг 1. Регистрация приложения

  1. Зайдите на api.slack.com/apps -> «Create New App» -> «From Scratch».
  2. Название: «AI Помощник» (любое).
  3. Workspace: выберите свой рабочий пространство -> «Create App».

Шаг 2. Настройка разрешений (Scopes)

В левом меню «OAuth & Permissions» -> «Bot Token Scopes» -> «Add an OAuth Scope» - добавьте по очереди:

  • app_mentions:read - видеть, когда бота упоминают
  • chat:write - отправлять сообщения
  • channels:history - читать историю канала (для контекста)
  • users:read - получать информацию о пользователях

Шаг 3. Установка в workspace

Там же «OAuth & Permissions» -> «Install to Workspace» -> «Allow». Скопируйте Bot User OAuth Token (начинается с xoxb-). Он понадобится для Make.

Шаг 4. Подписка на события

  1. Левое меню -> «Event Subscriptions» -> включите «Enable Events».
  2. Поле «Request URL» пока пустое - заполним после настройки Make.
  3. «Subscribe to bot events» -> «Add Bot User Event» -> выберите app_mention.
  4. Save Changes.

Собираем сценарий в Make: от упоминания до ответа

Make.com (бывший Integromat) - конструктор автоматизаций без кода. Создадим сценарий, который срабатывает на упоминание бота, отправляет запрос в OpenAI и постит ответ в тред.

Модуль 1: Slack - Watch Events

  1. В Make создайте новый сценарий. Добавьте модуль «Slack» -> «Watch Events».
  2. Connection: создайте новое подключение, вставьте Bot Token (xoxb-...).
  3. Event Type: выберите app_mention.
  4. После сохранения Make сгенерирует Webhook URL - скопируйте его.

Вернитесь в Slack App:

Вставьте скопированный URL в поле «Request URL» в Event Subscriptions. Slack отправит проверочный запрос. Make должен ответить challenge. Если всё ок - статус станет «Verified».

Модуль 2: Фильтр

Добавьте фильтр между Slack и OpenAI, чтобы бот реагировал только на прямые упоминания:

  • Condition: {{1.event.text}} Contains @имя_бота

Это отсекает технические события и случайные упоминания.

Модуль 3: OpenAI - Create Completion

  1. Добавьте модуль «OpenAI» -> «Create a Chat Completion».
  2. Connection: вставьте ваш OpenAI API ключ.
  3. Model: выберите gpt-4o-mini - дешёвая и быстрая модель.
  4. Сообщения:
  • System: «Ты AI-помощник в Slack. Отвечаешь кратко и по делу. Всегда на русском языке.»
  • User: {{1.event.text}}

Улучшаем промпт: контекст для осмысленных ответов

Чтобы бот понимал, кто спрашивает и в каком канале, обогатим промпт переменными Make.

В поле User сообщения OpenAI вставьте:

Контекст:
- Пользователь: {{1.event.user}} (Slack ID)
- Канал: {{1.event.channel}}
- Время: {{formatDate(1.event.ts; "DD.MM.YYYY HH:mm"; "Europe/Moscow")}}

Сообщение: {{1.event.text}}

Если хотите видеть имя пользователя вместо ID - добавьте перед OpenAI модуль Slack «Get a User's Info» (User: {{1.event.user}}). Тогда в промпте используйте {{2.user.real_name}}.

Для многоязычных команд добавьте в системный промпт: «Определи язык сообщения пользователя и отвечай на том же языке».

Отвечаем в тред, а не в канал

Ответ в тред - правило хорошего тона. Иначе бот засорит канал.

Модуль 4: Slack - Create a Message

  1. Connection: тот же Bot Token.
  2. Channel: {{1.event.channel}}
  3. Text: {{3.choices[].message.content}} (ответ от OpenAI)
  4. Advanced settings -> Thread Timestamp: {{1.event.ts}}

Поле thread_ts - это временная метка исходного сообщения. Slack поймёт, что это ответ в тред.

Дополнительно: эмодзи-реакция «думает»

Добавьте модуль Slack «Add Reaction» перед OpenAI: emoji = thinking_face, Channel = {{1.event.channel}}, Timestamp = {{1.event.ts}}. После ответа - модуль «Remove Reaction» убирает thinking_face. Пользователь видит, что запрос обрабатывается.

Discord-версия: та же логика, другой бот

Discord-бот строится аналогично, но через Discord Bot API.

Создание Discord Bot:

  1. Зайдите на discord.com/developers/applications -> «New Application».
  2. В меню «Bot» -> «Add Bot» -> «Yes, do it!».
  3. Скопируйте Token бота.
  4. В «OAuth2» -> «URL Generator»:
  • Scopes: bot
  • Bot Permissions: Send Messages, Read Message History, View Channels
  1. Откройте сгенерированный URL - пригласите бота на свой сервер.

Make сценарий для Discord:

Модуль 1: Discord - Watch Channel Messages

  1. Добавьте модуль «Discord» -> «Watch Channel Messages».
  2. Connection: вставьте Bot Token.
  3. Guild ID: ID вашего сервера (правая кнопка по серверу в Discord -> «Copy Server ID», включив Developer Mode).
  4. Channel: выберите нужный канал или «All channels».

Фильтр: добавьте условие, что сообщение содержит @имя_бота или начинается с !ask.

Модуль 2: OpenAI - точно так же, как в Slack варианте.

Модуль 3: Discord - Create a Message

  • Channel: {{1.channel_id}}
  • Content: {{3.choices[].message.content}}
  • Message Reference ID: {{1.id}} (это создаёт реплай на исходное сообщение)

Discord поддерживает Markdown: **жирный**, *курсив*, `код`.

Добавляем контекст: бот помнит историю треда

Без памяти бот не понимает «отвечай короче» или «переведи предыдущий ответ». Добавим историю.

Дополнительный модуль: Slack - Get Thread Messages

  1. Connection: Bot Token
  2. Channel: {{1.event.channel}}
  3. Thread Timestamp: {{1.event.thread_ts}} (если это ответ в тред) или {{1.event.ts}}
  4. Limit: 5

Этот модуль возвращает последние 5 сообщений треда.

Обновляем OpenAI модуль. Теперь сообщения содержат:

  • System: системный промпт
  • User (повторяется для каждого сообщения из треда):
  • Для сообщений от пользователей: role = user, content = {{message.text}}
  • Для сообщений от бота: role = assistant, content = {{message.text}}

В Make это делается через Iterator + Array Aggregator. Сложно, но результат стоит: бот понимает контекст.

Деплой и мониторинг: как проверить и не пропустить ошибку

Тест через curl (без Slack):

curl -X POST https://hook.make.com/ВАШ_WEBHOOK_ID \
 -H "Content-Type: application/json" \
 -d '{
 "event": {
 "type": "app_mention",
 "text": "<@BOTID> Привет, как дела?",
 "user": "U123456",
 "channel": "C123456",
 "ts": "1234567890.123456"
 }
 }'

Выполнение появится в Make Execution History - можно отладить без реальных сообщений.

Алерт при ошибке:

В настройках сценария (шестерёнка) -> «Advanced» -> «Error handler»:

  • Добавьте маршрут ошибки
  • В нём: Slack - Create a Message в ваш личный канал
  • Text: Ошибка в сценарии AI-бот: {{error.message}}

Теперь при сбое OpenAI или Slack вы получите уведомление.

Активация: включите сценарий (кнопка ON). В разделе «History» видите все выполнения: зелёные (успех), красные (ошибка). Make также шлёт email при ошибках по умолчанию.

Частые вопросы

Нужна ли корпоративная подписка Slack для ботов?

Нет. Боты работают на любом плане, включая бесплатный Free. На Free плане доступна история 90 дней и до 10 приложений - для AI-бота хватает.

Как ограничить бота только для определённых каналов?

В Make добавьте фильтр после Slack Watch Events: {{1.event.channel}} Equal to C1234567 (ID канала). ID канала: правая кнопка по каналу в Slack -> «Copy Channel ID».

Можно ли сделать бота, который отвечает по базе знаний?

Да. Подключите Notion MCP или загрузите документы в OpenAI Assistants API. В Make перед запросом к ChatGPT добавьте модуль поиска по Notion и вставьте найденный контент в User сообщение. Это базовый RAG без кода.

Discord bot и Slack app - одно и то же?

Нет. Это разные сущности с разными API и токенами. В Make создайте два отдельных сценария: один с Slack Watch Events, другой с Discord Watch Messages.

Как не превысить лимиты OpenAI API?

В настройках проекта OpenAI (platform.openai.com -> Settings -> Limits) ограничьте RPM (запросов в минуту) и TPM (токенов в минуту). В Make добавьте паузу (Wait) если несколько сценариев используют один ключ.

Что дальше

Следующий шаг: сравнение n8n vs Make vs Zapier vs Pipedream для AI в 2026 году. Но сначала - внедрите этого бота. Он сэкономит вашим менеджерам часы уже завтра.

AI Компас (t.me/kosmoslab_ai) - канал для предпринимателей в РФ и СНГ, которые применяют AI в своём бизнесе без программиста. Разбираем инструменты и схемы - без курсов и теории.