I've dug a bit deeper, and I'm now very confused at how this code is meant to operate. Here's the exception I get when attempting to roll for init: "processResults: TypeError: Cannot read property 'slice' of undefined" And here's where that happens: processResults = results => { try { let array = []; //iterate through the msg.inlinerolls data contained in results results.forEach(roll =>{ //find the tokenID for each element const tokenID = roll['expression'].split(' [')[1].slice(0, -1); It's choking because this is what I found inside roll: { "expression": "10+1d6cs0cf0", "results": { "resultType": "sum", "rolls": [ { "expr": "10+", "type": "M" }, { "dice": 1, "mods": { "customCrit": [ { "comp": "==", "point": 0 } ], "customFumble": [ { "comp": "==", "point": 0 } ] }, "results": [ { "v": 2 } ], "sides": 6, "type": "R" } ], "total": 12, "type": "V" }, "rollid": "-MPLldvCfg7U6ftmJCR1", "signature": "48ec0ea8c57e2b65507ac79445d0278684644144eaca276eccc20add1c0481e79918245331f6a206be2bde764292a49d8ba923604b327e433d1eef1ce4f6b722" } I feel as though I must be doing something wrong. Is there some setting that would turn 'expression' into the sort of object the code seems to be anticipating? Barring that, is there enough data in here for me to somehow pivot to the tokenid?