TBot36

Описание проекта

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

Конечная реализация

В конечном варианте проект будет состоять из клиент серверной составляющей. А именно:

  • Сервер который будет наблюдать за каналами
  • Клиент монитор для стримера, который позволяет собирать необходимую информацию с ПК стримера, а так же отображать информацию необходимую для стримера
  • Клиент монитор для ведущего модератора (не обязательно). Данный клиент необходим если есть нужда в ручном управлении бота или отслеживании его состояния и деятельности другими лицами которые желают помочь стримеру

На данный момент я вижу следующий функционал который будет осуществлять бот.

  • Модерация чата от спама разного характера
  • Оповещение стримера и зрителей о событиях на стриме, а так же общую информацию по запросу зрителя/стримера
  • Проведение каких либо акций или мероприятий в чате как онлайн, так и в режиме оффлайн
  • Возможность полностью индивидуальной настройки поведения бота на каждом канале
  • RealTime обновление настроек

Что сейчас уже реализовано?

  • Подключение к множеству каналов в один клик
  • Индивидуальная настройка для каждого канала (бан списки. правила, и тд)
  • Обнаружение прихода зрителей 
    • По событию от сервера
    • По сообщению в чате
  • Обнаружение ухода зрителей
    • По событию с сервера
    • timeout по активности в чате (в разработке)
    • timeout по нахождению на канале (в разработке)
  • Модерация сообщений чата:
    • Обнаружение CAPS сообщений (порог задается в процентах). Символы отличные от букв считаются символами верхнего регистра, что автоматически дает защиту от спама символами
    • Черный список слов. Задается боту список слов, которые если он обнаружит (по вхождению)  и выдаст событие
    • Обнаружение ссылок в сообщениях
    • Обнаружение повторение слов у зрителя в следующих друг за другом сообщений. Порог задается в процентах. Необходим для обнаружения зрителей которые навязчиво пишут в чат очень близкие по смыслу сообщения неоднократно
    • Отключение модерации на указаных участников чата
  • Подсчет зрителей Online
  • Получение доп. информации о зрителе при написании сообщения им в чат (подписка, турбо режим, и тд)
  • Хранение информации по каждому зрителю (входы, выходы, сообщения) в оперативной памяти и БД. Хранение оптимизированно и проверено (при 25к зрителей и работе бота в течении 6 часов, оперативки всем приложением было занято 40мб).
  • Консольный режим управления
  • В базу данных пишется: профиль пользователя, его сообщения, входы и выходы с каналов
  • Имеется 2 списка, команда:ответ привязывающиеся к каналам и глобальные. На обнаруженные команды бот отвечает. Тоесть можно свободно их создавать используя автозамену фрагментов
  • Поддержка следующих комманд жестко зашитых:
    • !я тут - говорит сколько времени зритель уже смотрит канал
    • !сколько (!uptime) - говорит сколько времени идет стрим и что смотрим
    • !онлайн (!online) - сообщает сколько зрителей на канале
    • !монеты (!money) - сообщает сколько монет у зрителя что сделал запрос
    • если команда не известная, ругает юзера за выдумки (можно настроить список исключений, например команды других ботов можно игнорировать и не ругать за них :)
  • На каждую команду можно сделать много разных вариантов, и бот выберет случайную
  • Поддержка замены фрагментов текста команды
    • %streamtime% - заменится на количество времени длительности стрима
    • %streamgame% - заменится на название игры стрима
    • %streamtitle% - заменится на Title стрима
    • %useronline% - заменится на количество зрителей
    • %username% - заменится на имя зрителя что написал команду
    • %usermoney% - заменяется на количество монет заработанных зрителем что написал команду
  • Начисление монет за просмотр стрима согласно настройкам канала
  • Отправка уведомлений в канал по интервалу времени и с учетом статуса стрима и использованием автозамены шаблонов (фрагментов)

Что буду делать в ближайшее время?

  • [ГОТОВО] Перенос бота на сервер. Это значит что он будет обвязан модулями БД, клиент серверного подключения, транспортным протоколом и тд
  • [ГОТОВО] Создание базы данных
  • ПО мониторинга бота
  • [ГОТОВО] Обучение бота работать с множеством каналов
  • [ГОТОВО] Добавить в функцию определения повторов список слов которые надо игнорировать (например: привет, пока, удачи, смайлики)
  • Заргрузку профилей пользователей из БД если в оперативной памяти ничего нет (после старта на горячую например)
  • Чистку оперативной памяти (пока нет необходимости, но предусмотреть хочу)
  • Вынести настройку в БД: интервал отправки сообщений
  • [ГОТОВО] Добавить команды на которые бот будет отвечать фразами из БД
  • Делать разные конкурсы и лотереи для траты монет и развлечения зрителей

Что щас делаем?

  • [ГОТОВО] Группирую настройки внутри ядра "на будущее"
  • [ГОТОВО] Учу бота обновлять настройки "на горячую"
  • Проверяю стабильность оставляя бота работать круглыми сутками на каналах найденых в топе
  • Дополняю список бан слов

Кто все это делает?

Я, один. Но я буду очень рад если ко мне присоеденятся. Пишется бот на Java 8. Особенно нужна помощь в придумывании функций и дизайна ПО мониторинга

Откуда идея?

Идея возникла у меня глядя на стримы на твиче. Стало грустно от стабильности и функционала существующих ботов. Ну а так же просто горел желанием сделать свой.

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

Бота пишу в личное время по вечерам слушая стримы.

На форуме есть раздел для бота. Если у Вас есть какие либо мнения, предложения или пожелания по проекту, рад буду Вас выслушать. 

Статья будет обновляться по мере развития проекта :)