var evtype = data.type || 'EVENT';
var ed = data.eventData || {};
var streamName = ed.name || ed.streamerName || '';
var title = ed.streamTitle || ed.title || '';
var viewers = ed.viewerCount !== undefined ? String(ed.viewerCount) : (ed.viewers !== undefined ? String(ed.viewers) : '');
var url = ed.externalURL || ed.url || ed.serverURL || '';
var chatUser = (ed.user && (ed.user.displayName || ed.user.username)) || '';
var chatMsg = ed.body || '';
var emoji, label;
if (evtype === 'STREAM_STARTED') { emoji = '🔴'; label = 'Now Live'; }
else if (evtype === 'STREAM_STOPPED') { emoji = 'âš«'; label = 'Stream Ended'; }
else if (evtype === 'USER_JOINED') { emoji = '👤'; label = 'Viewer Joined'; }
else if (evtype === 'CHAT') { emoji = '💬'; label = 'Chat'; }
else { emoji = '📡'; label = evtype.replace(/_/g, ' '); }
var lines = [emoji + ' ' + label + (streamName ? ' \u2014 ' + streamName : '')];
var htmlParts = ['' + emoji + ' ' + label + '' + (streamName ? ': ' + streamName : '')];
if (title) { lines.push(title); htmlParts.push('' + title + ''); }
if (viewers) { lines.push(viewers + ' viewers'); htmlParts.push(viewers + ' viewers'); }
if (chatUser && chatMsg) { lines.push(chatUser + ': ' + chatMsg); htmlParts.push('' + chatUser + ': ' + chatMsg); }
if (url && evtype === 'STREAM_STARTED') { lines.push(url); htmlParts.push('' + url + ''); }
result = { version: 'v2', plain: lines.join('\n'), html: htmlParts.join('
'), msgtype: 'm.notice' };