Разработчикам Twitchat предоставляет API для получения событий и удаленного управления некоторыми функциями.
Прочтите его документацию.
/search
/announce message
Создайте файл data/credentials/credentials.json
и установите следующее содержимое после заполнения значений:
{
"server_port" : 3018 ,
"admin_ids" : [ " YOUR_TWITCH_USER_ID " ],
"csrf_key" : " " ,
"twitch_client_id" : " " ,
"twitch_client_secret" : " " ,
"twitch_redirect_uri" : " http://localhost:8080/oauth " ,
"twitch_scopes" : [
" chat:read+user:read:chat " ,
" chat:edit+user:write:chat " ,
" moderator:manage:announcements " ,
" moderator:manage:chat_messages " ,
" moderator:manage:shoutouts " ,
" whispers:read " ,
" user:manage:whispers " ,
" moderator:read:chatters " ,
" channel:read:redemptions " ,
" channel:manage:redemptions " ,
" channel:manage:polls " ,
" channel:manage:predictions " ,
" moderator:manage:chat_settings " ,
" channel:moderate " ,
" channel:manage:moderators " ,
" channel:manage:vips " ,
" channel:manage:raids " ,
" channel:manage:broadcast " ,
" channel:read:hype_train " ,
" channel:edit:commercial " ,
" channel:read:subscriptions " ,
" user:read:emotes " ,
" user:read:follows " ,
" moderator:read:followers " ,
" user:read:moderated_channels " ,
" user:read:blocked_users " ,
" user:manage:blocked_users " ,
" user:edit:broadcast " ,
" moderator:manage:banned_users " ,
" moderator:manage:automod " ,
" moderator:manage:shield_mode " ,
" moderator:manage:unban_requests " ,
" clips:edit " ,
" channel:read:ads " ,
" channel:manage:ads " ,
" moderator:manage:blocked_terms " ,
" moderator:manage:warnings " ,
" moderator:read:moderators " ,
" moderator:read:vips " ,
" moderator:read:suspicious_users " ,
" bits:read "
],
"spotify_client_id" : " " ,
"spotify_client_secret" : " " ,
"spotify_scopes" : " user-read-currently-playing user-modify-playback-state playlist-read-private playlist-modify-public playlist-modify-private " ,
"spotify_redirect_uri" : " http://localhost:8080/spotify/auth " ,
"patreon_client_id" : " " ,
"patreon_client_secret" : " " ,
"patreon_scopes" : " identity campaigns campaigns.members w:campaigns.webhook " ,
"patreon_redirect_uri" : " http://localhost:8080/patreon/auth " ,
"patreon_client_id_server" : " " ,
"patreon_client_secret_server" : " " ,
"patreon_redirect_uri_server" : " http://localhost:3018/api/patreon/serverauth " ,
"patreon_webhook_secret" : " " ,
"patreon_cipherKey" : " " , //64 chars
"tenor_secret" : " " ,
"youtube_key" : " path/to/key.json " ,
"youtube_scopes" : [ " https://www.googleapis.com/auth/youtube.readonly " , " https://www.googleapis.com/auth/youtube.force-ssl " ],
"google_key" : " path/to/key.json " ,
"paypal_client_id" : " " ,
"paypal_client_secret" : " " ,
"donors_remote_api_secret" : " " ,
"contact_mail" : " " ,
"discord_client_id" : " " ,
"discord_public_key" : " " ,
"discord_bot_token" : " " ,
"streamlabs_client_id" : " " ,
"streamlabs_client_secret" : " " ,
"streamlabs_redirect_uri" : " " ,
"streamelements_client_id" : " " ,
"streamelements_client_secret" : " " ,
"tipeee_client_id" : " " ,
"tipeee_client_secret" : " " ,
"tipeee_redirect_uri" : " http://localhost:8080/tipeee/auth " ,
"tiltify_client_id" : " " ,
"tiltify_client_secret" : " " ,
"tiltify_webhook_verify" : " " ,
"tiltify_webhook_id" : " " ,
"tiltify_redirect_uri" : " http://localhost:8080/tiltify/auth " ,
"tiltify_scopes" : " public webhooks:write " ,
"tiltify_api_path" : " https://v5api.tiltify.com "
}
Создайте приложение Twitch и заполните значения client_id
и client_secret
.
Напишите все, что хотите, в поле csrf_key
, оно будет использоваться для защиты аутентификации Twitch от атак CSRF.
Настройте URI перенаправления приложения Twitch на:
http://localhost:8080/oauth
(адаптируйтесь к правильному порту и домену при развертывании онлайн)
Установите то же значение для свойства redirect_uri
файла credentials.json
.
Вы также можете создать приложение Spotify и заполнить spotify_client_id
и spotify_client_secret
По умолчанию сервер прослушивает порт 3018, вы можете изменить его в credentials.json
и src_front/utils/Config.ts
.
Этот проект был закодирован с помощью VSCode.
Рекомендуется установить следующие плагины:
Плагин Vue: https://marketplace.visualstudio.com/items?itemName=Vue.volar
Плагин I18n-ally: https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally
npm install
npm run dev
npm run build
node server/boostrap.js
Все следующее ДОЛЖНО быть выполнено в отдельной папке проекта GIT.
Скомпилируйте проект и поместите содержимое папки server
в корень вашего сервера.
Рядом с этим файлом создайте public
папку и поместите в нее содержимое локальной папки dist
.
Также добавьте папку credentials
внутри более старых data
в корне проекта.
Создайте файл env.conf
, просто напишите внутри него prod
и поместите его в корень проекта.
Установите все производственные зависимости и запустите сервер.
Вот ожидаемая структура файла:
─ корень
├─ node_modules/
├─ публичный/
├─ утилиты/
├─ данные/
├─ полномочия/
├─ контроллеры/
├─ bootstrap.js
├─ env.conf
Просто создайте новую папку в папке i18n
с кодом языка ISO 639-1.
Прочтите следующий раздел, чтобы узнать, как переводить метки.
Чтобы максимально упростить локализацию, был создан специальный интерфейс, в котором перечислены все доступные категории и ярлыки с возможностью их редактирования.
Любое обновление этого интерфейса вызывает пересборку скомпилированного файла, а также обновление любой страницы Twitchat , открытой в том же браузере.
Интерфейс доступен только администраторам и его можно найти здесь:
локальный хост: 8080/этикетки
Чтобы получить права администратора, вы должны указать свой идентификатор пользователя Twitch в массиве admin_ids
в файле credentials.json
.
Если вам нужно добавить новые метки, вам придется отредактировать источники JSON.
Все файлы этикеток можно найти в папке i18n
.
Они разделены по языкам, а затем по разделам.
К этому можно добавить любую новую структуру файлов или папок.
Все они объединяются в static/labels.json
в процессе сборки.
Файлы могут иметь любое имя, но все метки внутри них должны находиться в одном свойстве, которое будет базовым путем для использования метки. Имя свойства обычно совпадает с именем файла.
Пример:
─ en
├─ global.json
├─ home.json/
├─ triggers.json/
Пример global.json
:
{
"global" :{
"hello" : " World "
}
}
Пример home.json
:
{
"home" :{
"lorem" : " ipsum dolor sit amet "
}
}
Это выведет этот файл JSON:
{
"en" :{
"global" :{
"hello" : " World "
},
"hello" :{
"lorem" : " ipsum dolor sit amet "
}
}
}
Выполните следующую команду:
npm run streamdeck_package
Скомпилированный плагин будет находиться streamdeck_plugin/fr. Twitchat .streamDeckPlugin
.