Ik doe hier en daar een hoop Twitch gerelateerde projecten, om te zien wat de mogelijkheden zijn. Een van mijn laatste projecten was het maken van een Twitch Emote Extension voor Chrome, waarin ik liet zien hoe je gratis extra emote “slots” kunt krijgen. Dat bracht me in browser extensies, dus ik dacht laten we laten zien hoe je een vanaf nul te maken door het bouwen van een godslastering filter voor de Twitch chat.
Aan het einde van deze, willen we een extensie die, wanneer geïnstalleerd, controleert op een set van gemarkeerde woorden in de chat en vervangt ze door meer vriendelijke versies. Dit kan bijvoorbeeld handig zijn voor kinderen die naar streams kijken.
Als je alleen de code voor deze extensie wilt, is er een link naar het eindresultaat onderaan dit artikel.
Al goed, dus laten we er eerst maar eens aan beginnen. Maak een map ergens waar je wilt en noem het profanity-filter. Ik heb de mijne gemaakt op een plaats waar ik synchroniseer met GitHub.
Nu maakt u in deze map twee nieuwe bestanden: manifest.json en content.js. U zult zien hoe we ze zullen gebruiken wanneer we de extensie gaan bouwen.
Open manifest.json, het bestand waar Google metagegevens over uw extensie in opzoekt, en plak het volgende erin:
{ "manifest_version": 2, "name": "Twitch Profanity Filter Extension", "version": "0.1", "content_scripts": , "js": } ]}
Zoals u ziet, vertellen we Google dat deze extensie op elke pagina van Twitch moet werken en zeggen we ook dat de logica die op deze pagina’s moet worden uitgevoerd, zich in het bestand met de naam content.js bevindt. Merk op dat ik de versie op 0.1 heb gezet, omdat dit mijn eerste poging is.
De logica erin zetten
Nu opent u content.js in een teksteditor naar keuze. Ik zou Visual Studio Code ten zeerste aanbevelen, het is mijn go-to tekstverwerker voor alles wat met coderen te maken heeft en het is gratis.
Nu, de manier waarop we dit gaan opzetten is in een paar stappen. Wat willen we bereiken en hoe gaan we dat doen? We weten dat we bepaalde woorden willen veranderen in andere, wat betekent dat we de chatberichten lezen, ze scannen op gemarkeerde woorden en die woorden dan veranderen in vriendelijker woorden. Dus als de pagina laadt, willen we dat onze logica het volgende kan doen:
- De chatbox vinden
- Iedere keer als er een nieuw chatbericht verschijnt, het bericht of de berichtencontainer ophalen
- Gevlagde woorden veranderen in hun vriendelijke tegenhangers
Dus laten we aan de slag gaan. Het eerste deel is eigenlijk het activeren van het script wanneer de pagina, of meer specifiek het venster, is geladen. In javascript, kun je inhaken op die laad gebeurtenis en we gaan precies dat doen. Werk uw content.js bij met het volgende:
Dat zorgt ervoor dat wat we ook in die functie zetten, wordt aangeroepen als de pagina is geladen.
Vind de chatbox
Zo hoe vinden we de chatbox? Nou, in de Chrome-versie van de Twitch-website, de chatbox is opgenomen in een <div> element dat een klasse genaamd chat-scrollable-area__message-container heeft. We gaan dat element, of knooppunt, door javascript halen. Werk het bestand bij zodat het er als volgt uitziet: