Para desenvolvedores, Twitchat expõe uma API para receber eventos e controlar alguns recursos remotamente.
Leia sua documentação.
/search
/announce message
Crie um arquivo data/credentials/credentials.json
e defina o seguinte conteúdo após preencher os valores:
{
"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 "
}
Crie um aplicativo Twitch e preencha os valores client_id
e client_secret
.
Escreva o que quiser no campo csrf_key
, ele será usado para proteger a autenticação do Twitch contra ataques CSRF.
Configure o URI de redirecionamento do aplicativo Twitch para:
http://localhost:8080/oauth
(adaptar com a porta e o domínio adequados se estiver implantando on-line)
Configure o mesmo valor para a propriedade redirect_uri
do arquivo credentials.json
.
Você também pode criar um aplicativo Spotify e preencher o spotify spotify_client_id
e spotify_client_secret
Por padrão, o servidor escuta na porta 3018, você pode alterá-lo em credentials.json
e src_front/utils/Config.ts
.
Este projeto foi codificado com VSCode.
Recomenda-se instalar estes plugins:
Plug-in Vue: https://marketplace.visualstudio.com/items?itemName=Vue.volar
Plug-in I18n-ally: https://marketplace.visualstudio.com/items?itemName=lokalise.i18n-ally
npm install
npm run dev
npm run build
node server/boostrap.js
Todos os itens a seguir DEVEM ser feitos em uma pasta separada do projeto GIT.
Compile o projeto e envie o conteúdo da pasta server
para a raiz do servidor.
Ao lado deste arquivo, crie uma pasta public
e coloque o conteúdo da sua pasta dist
local dentro dela.
Adicione também a pasta de credentials
dentro de um data
mais antigo na raiz do projeto.
Crie um arquivo env.conf
, apenas escreva prod
dentro e coloque-o na raiz do projeto.
Instale todas as dependências de produção e execute o servidor.
Aqui está a estrutura de arquivo esperada:
─ raiz
├─ node_modules/
├─ público/
├─ utilitários/
├─ dados/
├─ credenciais/
├─ controladores/
├─ bootstrap.js
├─ env.conf
Basta criar uma nova pasta na pasta i18n
com o código ISO 639-1 do idioma.
Leia a próxima seção para saber como traduzir rótulos
Para tornar a localização o mais fácil possível, foi criada uma interface dedicada que lista todas as categorias e rótulos disponíveis com a possibilidade de editá-los.
Qualquer atualização nesta interface aciona uma reconstrução do arquivo compilado, bem como uma atualização em qualquer página Twitchat aberta no mesmo navegador.
A interface é acessível apenas para administradores e pode ser encontrada aqui:
localhost:8080/rótulos
Para obter direitos de administrador, você deve definir seu ID de usuário do twitch na matriz admin_ids
no arquivo credentials.json
.
Se precisar adicionar novos rótulos, você terá que editar as fontes JSON.
Todos os arquivos de etiquetas podem ser encontrados na pasta i18n
.
Eles são divididos por idioma e depois por seções.
Qualquer nova estrutura de arquivo ou pasta pode ser adicionada a isso.
Todos eles são mesclados em static/labels.json
durante o processo de construção.
Os arquivos podem ter qualquer nome, mas todos os rótulos dentro dele devem estar sob uma única propriedade que será o caminho base para usar o rótulo. O nome da propriedade geralmente é igual ao nome do arquivo.
Exemplo:
─ en
├─ global.json
├─ home.json/
├─ triggers.json/
Exemplo global.json
:
{
"global" :{
"hello" : " World "
}
}
exemplo home.json
:
{
"home" :{
"lorem" : " ipsum dolor sit amet "
}
}
Isso gerará este arquivo JSON:
{
"en" :{
"global" :{
"hello" : " World "
},
"hello" :{
"lorem" : " ipsum dolor sit amet "
}
}
}
Execute o seguinte comando:
npm run streamdeck_package
O plugin compilado estará lá streamdeck_plugin/fr. Twitchat .streamDeckPlugin
.