| chat_log.json | ||
| emoticon.txt | ||
| fullchat.mu | ||
| index.mu | ||
| last100.mu | ||
| meshchat.mu | ||
| nomadnet.mu | ||
| README.md | ||
| topic.json | ||
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-стиля чата.
Скопируйте файлы из релиза GitHub в папку ./nomadnetwork/storage/pages/,
сделайте nomadnet.mu и meshchat.mu исполняемыми через 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) |
sqlite3 |
Локальное хранение SQLite БД для привязки никнейма к LXMF |
Установка:
pip install pytz requests geopy sqlite3
Также необходимо установить и настроить 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
2. Скопировать файлы в директорию страниц NomadNet
cp -r thechatroom/* ~/.nomadnetwork/storage/pages/
3. Сделать файлы исполняемыми
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
Убедитесь, что у пользователя есть права на чтение и запись для JSON и DB файлов.
4. Запустить NomadNet
Установите и настройте Nomadnet (или другой сервер страниц nomadnet), после настройки:
nomadnet
Готово!
Примечание: TheChatRoom создан и запускался на машинах с правами root, возможно потребуются права root для запуска.
LXMF Контакт: 0d051f3b6f844380c3e0c5d14e37fac8
Технические заметки
- Чат не обновляется автоматически из-за ограничений 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, выбор темы чата и т.д.)
Команды администрирования
(например, добавление или удаление нескольких администраторов)