Files
thechatroom-ru/README.md
2025-11-23 10:31:05 -06:00

16 KiB
Raw Blame History

The Chat Room! RU-Edition

IRC-стиль чата для Reticulum NomadNet, оптимизирован для MeshChat v2.1+. Автор: F. Переведено на русский Sudo-Ivan.


Демо

Официальная страница NomadNet:

Ссылка на страницу NomadNet (оптимизировано для MeshChat v2.1+): d251bfd8e30540b5bd219bbbfcc3afc5:/page/index.mu


Информация

Добро пожаловать в THE CHATROOM v2.00 от F.
Первый IRC-стиль чата для Reticulum/Nomadnet, оптимизирован для Nomadnet и Meshchat v2.x+.

Создан в v1 (beta) 10 августа 2025.

Стабильная версия v2.00: 01/10/2025


Обзор проекта

Скрипт страницы Nomadnet на Python для создания IRC-стиля чата.
Файлы уже находятся в папке ./nomadnetwork/storage/pages/.
Сделайте файлы исполняемыми через chmod +x и запустите узел Nomadnet.

  • Децентрализованная mesh-сеть на базе NomadNetwork
  • Регистрация не требуется — выберите никнейм и начинайте общаться
  • Никнеймы автоматически окрашиваются и сохраняются между сессиями
  • Привязка никнейма к адресу LXMF через Fingerprint в Meshchat v2+ для сохранения и восстановления никнейма между сессиями (благодарность: THOMAS)
  • Построен на Python и компонентах Micron, JSON и SQL БД для чата, темы и сохранения никнеймов
  • Официальный скрипт чата размещён на VPS для стабильной работы

Демо: d251bfd8e30540b5bd219bbbfcc3afc5:/page/index.mu

GitHub: https://github.com/fr33n0w/thechatroom


Требования

Проект использует встроенные модули Python и сторонние библиотеки.

Встроенные модули (установка не требуется)

Модуль Назначение
os Работа с операционной системой (пути к файлам, переменные окружения)
sys Доступ к системным параметрам и функциям
json Парсинг и работа с JSON данными
time Операции со временем (задержки, временные метки)
random Генерация случайных значений
re Сопоставление с регулярными выражениями
shutil Высокоуровневые файловые операции (копирование, перемещение)
collections Специализированные структуры данных, например Counter
datetime Работа с датой и временем

Сторонние библиотеки (установка через pip)

Пакет Назначение
pytz Определения и преобразования часовых поясов
requests Упрощённые HTTP запросы (нужно только для команды /meteo)
geopy Геолокационные сервисы (поиск адресов через Nominatim)

Установка:

pip install pytz requests geopy

Примечание: sqlite3 является встроенным модулем Python и не требует установки.

Также необходимо установить и настроить NomadNet для размещения страницы:

pip install nomadnet

Протестировано и работает с rns_server_pages от SebastianObi: https://github.com/SebastianObi/RNS-Tools/tree/main/rns_server_page


Установка

1. Скачать файлы

Клонировать репозиторий или скачать ZIP:

git clone https://github.com/Sudo-Ivan/thechatroom.git
cd thechatroom

2. Сделать файлы исполняемыми

Файлы уже находятся в правильной директории. Сделайте их исполняемыми:

chmod +x ./nomadnetwork/storage/pages/nomadnet.mu
chmod +x ./nomadnetwork/storage/pages/meshchat.mu
chmod +x ./nomadnetwork/storage/pages/fullchat.mu
chmod +x ./nomadnetwork/storage/pages/last100.mu

3. Запустить NomadNet

nomadnet -d --config ./nomadnetwork --rnsconfig ./.reticulum/

Готово!

Примечание: TheChatRoom создан и запускался на машинах с правами root, возможно потребуются права root для запуска.


Установка через Docker

Требования

  • Docker
  • Docker Compose

Быстрый старт

git clone https://github.com/Sudo-Ivan/thechatroom.git
cd thechatroom
docker compose up -d

Контейнер запустится с предустановленной конфигурацией Reticulum и интерфейсами. По умолчанию используется host network mode для работы с mesh-сетью.

Персистентное хранение данных (опционально)

Для сохранения данных между перезапусками контейнера раскомментируйте строки volumes в docker-compose.yml:

volumes:
  - ./nomadnetwork:/app/nomadnetwork
  - ./.reticulum:/home/appuser/.reticulum

Это позволит сохранять логи чата и конфигурацию Reticulum на хосте.

Управление контейнером

docker compose logs -f
docker compose restart
docker compose down

Технические заметки

  • Чат не обновляется автоматически из-за ограничений Micron
    → Используйте кнопки Reload в нижней панели меню для просмотра новых сообщений
  • Никнеймы можно сохранять через Fingerprint binding в MeshChat
    • Использование: нажмите кнопку fingerprint, установите никнейм и перезагрузите страницу. Никнейм сохранён. → Это позволяет сохранять никнейм между сессиями (благодарность Thomas!)
    • Для восстановления никнейма при потере кэша сессии нажмите fingerprint снова, и он появится автоматически
  • Основной вид чата показывает последние 30 сообщений для соответствия окнам браузера MeshChat, можно настроить лимит в скрипте → Полные логи доступны через кнопку View Logs в нижнем меню
  • Команда /meteo использует внешние API
    → Требует установки requests и geopy
  • Построен на Python и компонентах Micron
    → Совместим с MeshChat v2.1+ и чистым клиентом NomadNet

Справочник команд

Общие информационные и служебные команды

Команда Описание
/info Показать информацию о чате, использование и отказ
/cmd Показать все доступные команды пользователя
/stats Показать статистику чата, включая Топ-5 участников
/users Список всех активных пользователей чата
/version Показать версию скрипта, последние обновления

Интерактивные команды чата

Команда Описание
/lastseen <nickname> Показать последнее появление и сообщение пользователя
/topic или /topic <text> Просмотр или изменение текущей темы комнаты
/search <keyword(s)> Поиск ключевых слов в полном логе чата
/time Показать текущее время сервера (UTC) и локальное
/ping Ответить PONG! для подтверждения активности системы
/meteo <city> Получить информацию о погоде для города (требует интернет + API)

Команды социального взаимодействия

Команда Описание
/e Отправить случайные эмодзи из внутреннего списка
/c <message> Отправить цветное сообщение со случайными цветами фона и шрифта
@nickname Упомянуть пользователя с цветной подсветкой
$e Вставить случайный эмотикон в любое место сообщения
/welcome или /welcome <nickname> Отправить приветственное сообщение в комнату или конкретному пользователю

Команды статуса пользователя

Команда Описание
/hi, /bye, /brb, /lol, /exit, /quit, /away, /back, /notice Отправить обновления статуса или реакции
Пример /hi Hello World! — синтаксис работает для всех команд статуса

Административные команды (ограниченный доступ)

Доступны только системным администраторам через /admincmd

Команда Описание
/clear Удалить последнее сообщение навсегда
/clear N Удалить последние N сообщений, например /clear 3
/clear user <nickname> Удалить все сообщения от конкретного пользователя
/clearall Очистить весь лог чата и базу данных (необратимо)
/backup Создать полную резервную копию chat_log.json в папке скрипта

Некоторые команды требуют доступа в интернет или сторонних библиотек (requests, geopy).
Административные команды защищены и доступны только авторизованным пользователям. (Отредактируйте никнейм SYSADMIN в скрипте!!)


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

Антиспам

The ChatRoom! включает список фильтров антиспама на основе отдельных слов или комбинаций фраз. Добавьте свои или удалите ненужные заблокированные слова в секции spam_patterns скрипта.

Фиксированные окна интерфейса

Интерфейс фиксирован с помощью переменной DISPLAY_LIMIT, ограничен примерно 28 сообщениями для соответствия окну браузера MeshChat 2.0+.
То же для страницы Nomadnet с более простым подходом, ограничение строк примерно до 36.
Примечание: Длинные сообщения пользователей разбиваются на несколько строк, что может изменять размер финального интерфейса.

Система цветов никнеймов

Автоматическое окрашивание никнейма пользователя для лучшей читаемости, сохраняется для любого сообщения или команды, один никнейм — один цвет. Можно редактировать цвета по умолчанию в скрипте.

Привязка никнейма к отпечатку LXMF (благодарность Thomas!)

Нажав кнопку Fingerprint в meshchat v2.1+, вы отправляете свой lxmf в чат, и скрипт автоматически привяжет никнейм и адрес lxmf как автовход. При повторном входе в чат никнейм будет автоматически восстановлен. Если переменные окружения meshchat отсутствуют (например, после перезагрузки), просто нажмите fingerprint снова, и на основе вашего lxmf никнейм появится автоматически. Никнейм и соответствующий адрес LXMF сохраняются в SQL БД для восстановления.

Функция разбиения длинных сообщений

Длинные сообщения автоматически разбиваются на несколько строк для сохранения постоянного макета и формата интерфейса.

Команды статистики и пользователей

Показывают статистику чата, топ участников, общее количество отправленных сообщений на пользователя, общее количество пользователей в чате (команды: /stats или /users)


Планируемые функции

Персонализированные настройки пользователя

(например, установка предпочтений цвета никнейма, возможность кликнуть по никнейму для отправки адреса lxmf для приватного чата, удаление привязки никнейма и lxmf, выбор темы чата и т.д.)

Команды администрирования

(например, добавление или удаление нескольких администраторов)