/ support / ebsSupport / test_parse.mjs
test_parse.mjs
 1  const rawSample = "@badge-info=;badges=;client-nonce=5321d2e6bc17a6d3e878d2ca7b1dc240;color=#00FF7F;display-name=Dhevoni;emotes=;first-msg=0;flags=;id=23eee74b-ddfa-4f82-95ae-03d85db0bc67;mod=0;returning-chatter=0;room-id=97782735;subscriber=0;tmi-sent-ts=1727839928786;turbo=0;user-id=60871641;user-type= :dhevoni!dhevoni@dhevoni.tmi.twitch.tv PRIVMSG #solidfps :how many guilds does epherium have on the server now?\r\n"
 2  
 3  function ParseMessage(raw) {
 4    const atCharacter = raw.indexOf("@")
 5    ,      firstSpace = raw.indexOf(" ")
 6    ,      firstColon = raw.indexOf(":", firstSpace+1)
 7    ,     secondColon = raw.indexOf(":", firstColon+1)
 8  
 9    const tagsRaw = raw.substring(atCharacter+1, firstColon) 
10    ,   sourceRaw = raw.substring(firstColon+1, secondColon)
11    ,     message = raw.substring(secondColon+1)
12  
13    const tags = {}
14  
15    for (const tag of tagsRaw.split(";")) {
16      const [key, value] = tag.split("=")
17      tags[key] = value
18    }
19  
20    const nickname = sourceRaw.substring(sourceRaw.indexOf("!")+1,sourceRaw.indexOf("@"))
21  
22    return { user: nickname, id: +tags["user-id"], bits: tags.bits || 0, message }
23  }
24  
25  console.log(ParseMessage(rawSample))