Skip to content

moevm/mse1h2025-rocket0

Repository files navigation

Инструкция по запуску

  • Склонировать репозиторий и перейти в папку с ним
  • скопировать настройки среды командой cp .env.example .env
  • Прописать команду:make chat-compose-up. Она создаст инстанс рокетчата и поднимет контейнер с ним: нужно дождать полной загрузки:

изображение

  • Подгрузить дамп чата make load-chat-dump, подождать, пока дамп подгрузится

изображение

  • Прописать команду make bot-compose-up: она поднимет бота и подключится к инстансу рокетчата. Также нужно подождать, пока бот загрузится полностью:

изображение

  • Подключиться к рокетчату через браузер по localhost:3000
  • Авторизоваться: логин for_dump; пароль 123456

изображение

Если все сделано правильно, то на экране откроется рокет чат с 5 каналами:

изображение

  • для проверки, что бот доступен, напишите в канал #general команду !find_unanswered - в ответ бот должен переслать сообщения без ответа:

изображение

  • команды make bot-compose-down и make chat-compose-down соответственно удалят ранее поднятые контейнеры, если вы закончили работу

Доступные команды боту

  • !find_unanswered : пересылает все сообщения без ответа, которые были в открытых или закрытых каналах (команды бота или сообщения со специфической реакцией ⚙️ не учитываются). Доступны флаги --from и --to с указанием времени в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС: позволяют сделать срез с определенной даты и до определенной даты. (пример: !find_unanswered --from 2025-05-12 18:33:01 --to 2025-05-13 18:33:01)
  • !stats : присылает в ответ статистику по инстансу в csv файле, собранную с открытых и закрытых каналов. Доступны флаги: --from и --to с указанием времени в формате ГГГГ-ММ-ДД ЧЧ:ММ:СС: позволяют сделать срез с определенной даты и до определенной даты; а также флаги --users, --roles и --channels, с указанием пользователей, каналов или ролей после соответствующего флага, чтобы сделать статистику уже по запросу пользователя. (пример: !stats --from 2025-05-12 18:33:01 --to 2025-05-13 18:33:01 --users for_dump)
  • find_message : пересылает в ответ все сообщения, которые соответствуют заданному регулярным выражением паттерну. (пример: !find_message Вопрос\sбез\sответа) Замечание: пробелы нужно заменять \s, иначе символы после них будут отбрасываться.
  • !time : если настроена интеграция с Telegram (см Интеграция с Telegram ниже), то присылает уведомление пользователю в Telegram и выводит текущее время.
  • !refresh : обновляет список каналов, в которых бот будет отвечать.

Доступные возможности

  • При написании сообщения в чат со знаком вопроса, бот ответит на него в треде полезными ссылками (пока что просто ссылкой одной)
  • Привилегированные пользователи (роли задаются в .env, по умолчанию - admin) могут ставить реакции ⚙️ на сообщения, чтобы бот игнорировал их (реакция поставленная пользователем других ролей учитываться не будет)

Интеграция с Telegram

  • Создайте своего бота, используя @BotFather. Инструкции по созданию бота есть в интернете, например: ссылка.
  • В файле .env с новой строки запишите токен, созданного вами бота (который выглядит как 123456:ABC-DEF1234ghIkl) в формате TELEGRAM_TOKEN=<your token> (смотрите пример в файле .env.example).
  • Узнайте свой ID пользователя в Telegram. Для этого вы можете воспользоваться ботом @getmyid_bot (скопируйте именно user ID, а не chat ID).
  • В файле .env с новой строки запишите ID пользователей, которым бот должен присылать сообщения в формате (TELEGRAM_USERS_ALLOW_LIST=875,8907) (смотрите пример в файле .env.example). Можно указать один ID, можно несколько через запятую.
  • Отправьте вашему боту команду /start в Telegram-чате. Он никак не отреагирует - это нормально. Это нужно, чтобы бот мог писать вам сообщения (если бот должен оповещать нескольких пользователей, все они также должны запустить у себя бота).

Если всё пройдёт успешно, бот будет присылать вам сообщения подобного вида: requests:INFO - Command.TIME None

Интеграция бота в существующий инстанс

0. Подготовка чата

При необходимости изменить файл .env:

ROCKET_CHAT_USER - имя бота в чате ROCKET_CHAT_PASSWORD - пароль бота в чате PRIVILEGED_ROLES - через запятую указываются привилегированные роли (по умолчанию только 'admin') ENV_TYPE - любой кроме dev (по умолчанию, в случае отствувия, будет dev)

Настройка чата Боту необходимо выдать разрешение, указанное на картинке ниже (Administration > Workspace > Permissions) image

Также необходимо применить настройки, изображённые на картинке ниже Administration > Workspace > Settings > General > REST API image

1. Создание бота

Шаг 1: Откройте администрирование

Администрирование

Шаг 2: Выберите рабочее пространство

Рабочее пространство

Шаг 3: Перейдите в раздел "Пользователи"

Раздел пользователей

Шаг 4: Создайте нового пользователя

  • Нажмите New User в правом верхнем углу
  • Заполните поля:
    • Логин/пароль → должны совпадать с .env файлом
    • Почта/имя → любые значения (не критично)
    • Роль → обязательно выберите bot

Роль бота Настройки пользователя

Готово! Бот создан. Теперь добавьте его в нужные каналы.


2. Добавление бота в каналы

Для закрытого канала (например, "questions")

  1. Откройте канал → нажмите "Участники"
    Участники канала
  2. Нажмите "Добавить" → выберите созданного бота
    Добавление участника Выбор бота

Для публичных каналов

Можно добавлять точно так же, но можно сразу во все: При создании бота отметьте галочку:
[✓] Присоединить к публичным каналам
→ бот добавится автоматически.


3. Запуск и проверка бота

Запуск контейнера

make bot-compose-up
  • image
  • Дождитесь окончания сборки
  • Попробуем написать команду боту
  • image
  • Видим, что бот работает

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Packages

No packages published

Contributors 7

Languages