Skip to content

MrMalina/httshots

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

67 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Heroes of the Storm Twitch bot.

Бот содержит следующий функционал:

  • Выводит информацию о лобби во время загрузки матча (батлтеги, уровни аккаунтов, кто с кем в группе)
  • Выводит выбранные таланты прямо во время матча (при загрузке изображений по FTP)
  • Послематчевая статистика с дополнительными параметрами
  • Послематчевый список талантов
  • Порядок драфта (для матчей, где есть драфт)
  • Результаты сыгранных матчей за день
  • Команды !матч и !таланты в twitch-чате (подробнее в разделе с командами)

The bot offers the following functionality:

  • Displays lobby information during match loading (BattleTags, account levels, who is grouped with whom)
  • Displays selected talents during the match (when using FTP for image loading)
  • Post-match statistics with additional parameters
  • Post-match talents list
  • Draft order (for matches featuring a draft phase)
  • Results of matches played during the day
  • !game and !talents commands in the Twitch chat (details in the commands section)

Уточнения

  • Сохранённые изображения публикуются на Imgur или на FTP (доступ к FTP могу предоставить по запросу)
  • При использовании Imgur выбранные таланты в текущем матче не будут публиковаться
  • Для работы бота понадобится второй twitch-аккаунт, который будет работать в качестве бота
  • Примеры изображений можно посмотреть на сайте бота

Clarifications

  • Saved images are published to Imgur or FTP (FTP access available upon request)
  • When using Imgur, selected talents for the current match will not be published
  • A second Twitch account will be needed to operate as the bot
  • Example images can be viewed on the bot's website

Установка бота

Если у вас уже установлен бот, а вы хотите обновить его, то перейдите в раздел Обновление до актуальной версии.

  1. Установить стабильную версию Python3
  2. Установить бота (вводить в командную строку)

Примечание: Для открытия командной строки, нажмите win+r, введите cmd, нажмите enter.
Примечание: Если при вводе последней команды выводит ошибку: ERROR: Cannot find command ' \git' - do you have 'git' installed and in your PATH?, то требуется установить git.
Примечание: Если появляется ошибка о недоступности github.com, то блокировать доступ к сайту может Zapret для обхода DPI или VPN.

py -m pip install -U git+https://github.com/MrMalina/httshots.git
  1. Перейти в директорию с ботом

Примечание: Если python установлен в директорию по умолчанию, то бот располагается в c:\Users\Пользователь\AppData\Local\Programs\Python\Lib\site-packages\httshots\.

  1. Скопировать конфигурационный файл

Перейти в директорию config сделать копию файла example_ru.ini или example_en.ini и переименовать её в config.ini

  1. Заполнить конфигурационный файл

Примечание: Более подробная настройка параметров twitch_client_id, twitch_client_secret, twitch_bot_id и twitch_owner_id описана в секции Подключение к Twitch.
Примечание: Вероятно, понадобится выдать права модератора аккаунту-боту, так как при частом использовании команд, твич отстранит его за спам в чат.

  1. Запустить бота

Запуск бота осуществляется через командную строку:

py -m httshots

Для запуска бота с параметрами:

py -m httshots ПАРАМЕТРЫ

Список параметров:

  • IGNORE_PREV_MATCHES - при запуске бота НЕ учитывать ранее сыгранные сегодня матчи. Приоритет выше, чем параметр add_previous_games в конфигурационном файле
  • STARTING_FROM_HOUR - не учитывать сыгранные матчи до указанного часа. То есть, указав STARTING_FROM_HOUR 18, все матчи до 18 часов не учитываются при запуске бота
  • SEND_BATTLE_LOBBY - при запуске бота выводить информацию о лобби, если её можно получить. Приоритет выше, чем параметр send_previous_battle_lobby в конфигурационном файле
  • URL_TO_CONSOLE - дублировать все ссылки в консоль. Приоритет выше, чем параметр duplicate_url_in_console в конфигурационном файле
  • GET_TWITCH_ID <account_name> - Получить идентификатора указанного аккаунта. После получения идентификатора бот будет выключен

Например, чтобы запустить бота с игнорированием предыдущих матчей и дублированием ссылок в консоль:

py -m httshots IGNORE_PREV_MATCHES URL_TO_CONSOLE

Или, например, для игнорирования матчей, сыгранных до 18 часов, и дублирования ссылок в консоль, команда будет выглядеть так:

py -m httshots STARTING_FROM_HOUR 18 URL_TO_CONSOLE

Подключение к Twitch

Для применения бота требуется выполнить следующие шаги:

  1. Создание приложения Twitch. Приложение необходимо для работы с API Twitch
    • Перейдите по ссылке Twitch Developer Console
    • Залогиньтесь с основного аккаунта
    • Создайте приложение (не расширение!) - кнопка подать заявку:
      • Заполните название (далее оно нигде не будет фигурировать)
      • Добавьте http://localhost:4343/oauth/callback в OAuth Redirect URL и нажмите Добавить. Новую пустую строку удалите.
      • Категория - Chat Bot
      • Тип клиента - Конфиденциально
    • Перейдите в управление созданным приложением
    • Скопируйте Идентификатор клиента в переменную twitch_client_id конфига
    • Скопируйте Секретный код клиента в переменную twitch_client_secret конфига
  2. Получение идентификаторов аккаунта владельца и аккаунта бота
    • Зайдите в консоль и введите py -m httshots GET_TWITCH_ID ИМЯ_АККАУНТА, вместо ИМЯ_АККАУНТА введите то имя аккаунта, для которого хотите получить ID
    • Например, введя py -m httshots GET_TWITCH_ID malinatest, в ответ будет выведена строка User: malinatest - ID: 660661446. Если ничего не выводится, значит такого аккаунта не существует!
    • Скопируйте ID аккаунта-владельца в переменную twitch_owner_id конфига
    • Скопируйте ID аккаунта-бота в переменную twitch_bot_id конфига
  3. Авторизация аккаунта-бота и приложения аккаунта-владельца
    • Запустите бота py -m httshots
      • Вариант 1. Разлогиньтесь на твиче и залогиньтесь на аккаунте-боте
      • Вариант 2. Откройте браузер в режиме инкогнито и залогиньтеся там на аккаунте-боте
    • Перейдите по ссылке для стандартных прав http://localhost:4343/oauth?scopes=user:bot+user:read:chat+user:write:chat
    • Авторизуйтесь. Если всё прошло успешно, то в браузере будет выведено Success. You can leave this page.
  4. Связь канала аккаунта-владельца и приложения аккаунта-владельца
    • Залогиньтесь на аккаунт-владельца
    • Перейдите по ссылке http://localhost:4343/oauth?scopes=channel:bot
    • Авторизуйтесь. Если всё прошло успешно, то в браузере будет выведено Success. You can leave this page.
  5. Завершение настройки
    • Отключение бота, нажав CTRL+C в консоли, или закрыв консоль
    • Настройка подключения к twitch завершена. Не забудьте настроить конфигурационный файл до конца

Подключение FTP

Для отображения талантов прямо из матча, создайте в директории config::ftp_site_name/config::ftp_folder/ директорию curname.
Итого должно получиться, например: /httshots.ru/mln/curgame.
Перенесите в эту директорию файл index.html из директории httshots/files/
Файл index.html сгенерирован через генеративную сеть искусственного интеллекта.

Вывод результата матчей на экран

Если включен параметр score_use в конфигурационном файле, то при завершении каждого матча будет обновляться файл httshots/files/upload/score.html.
Чтобы вывести результат на экран, создайте в OBS новый Источник - Браузер, установите галочку на Локальный файл. Укажите путь к файлу. На экране появится надпись VavaViva. Измените Ширину и Высоту по вкусу, больше изменений не требуется.
При запуске бота счёт обновляется.

Список команд в twitch-чате

Ниже представлен список команд, которые доступны в чате трансляции, где активен бот.

  • !game <[cmd]> <[param]> или !матч <[команда]> <[параметр]> - команда позволяет вывести информацию о прошлом сыгранном матче.
  • !game или !матч без параметров - результат последнего сыгранного матча
  • !game score или !матч счёт - уровни команд и количество убийств
  • !game bans или !матч баны - список забаненных персонажей. Имена персонажей указываются так, как применимы в реплее игры
  • !game draft или !матч драфт - порядок драфта в рейтинговом матче
  • !game heroes или !матч герои - список персонажей в матче
  • !game meat или !матч мясо - сколько мяса не поднял Мясник
  • !game <hero> - таланты, которые были взяты у персонажа
  • !game <hero> score или !матч <персонаж> счёт - итоговый KDA
  • !game <hero> <параметр> - значение указанного параметра, если он будет обнаружен. Список параметров можно посмотреть, например, тут
  • !games или !матчи - результаты сыгранных матчей
  • !talents <hero> или !таланты <персонаж> - таланты персонажа в текущем матче. Таланты начинают публиковаться примерно через минуту после начала матча

Известные проблемы

Нет гарантии, что будет корректно выводиться информация по своей игре. А именно:

  1. Информация о лобби может обманывать по списку команд
  2. Информация о матче, талантах и прочее может выводить информацию не в правильном порядке героев
  3. Нельзя получить информацию о том, какими способностями сколько нанесено урона
  4. Значения на изображениях могут быть немного сдвинуты влево

Обновление до актуальной версии

  1. Ввести в консоль
py -m pip install -U git+https://github.com/MrMalina/httshots.git
  1. Проверить, не изменился ли конфиг - сравнить example_ru.ini и ваш config.ini на предмет появления новых полей
  2. Если есть новые поля - перенести их в config.ini и заполнить по усмотрению

Обновление HoTS

При обновлении игры бот не сможет читать реплеи.

  1. Проверка новой версии бота
  • Зайдите на страницу бота httshots и проверьте, есть ли актуальная версия под новую версию хотса.
  • Если новая версия есть - обновитесь согласно разделу обновления
  1. Проверка обновления игровых данных

Если в обновлении были обновлены изображения талантов/названия талантов или добавлены новые таланты, то потребуется обновление json файла с информацией о героях. Если таких изменений не было, то следующий шаг можно опустить.

  1. Обновление файла с игровыми данными
  • Файл с игровыми данными можно обновить самостоятельно через утилиту HeroesDataParser. Потребуется извлечь herodata.
  • Напишите мне и подождите, когда обновится бот.
    Примечание: Пользоватся ботом можно и со старым файлом с игровыми данными, но возникнут ошибки, если в матче выберут талант, который был добавлен или изменено его изображение/название.

Благодарности

  • С помощью приложения CascView извлечены файлы из хотса
  • Библиотека для работы с twitch - twitchio 3.0
  • Файл с информацией о героях (herodata.json) получен с помощью HeroesDataParser

Лицензия

Авторские права 2025 MrMalina

Исходный код этого проекта опубликован в соответствии с лицензией MIT. Для получения дополнительной информации см. прилагаемый файл LICENSE.

About

Twitch bot for the game Heroes of the Storm

Topics

Resources

License

Stars

Watchers

Forks

Contributors