Appearance
Exemple — compteur par viewer (backtask, persistant)
Intention : chaque !points incrémente le compteur personnel du viewer, persistant entre les streams. Pas d'UI : l'appli tourne en fond.
infos.json (extrait)
jsonc
{
"launch-mode": "backtask",
"app-index": "index.html",
"scopes": ["chat:read", "chat:write"]
}script.js
js
(async function () {
kapp.chat.onCommand('points', async (user, ev) => {
const data = (await user.getAppData()) ?? { points: 0 }; // état PAR viewer
data.points += 1;
await user.setAppData(data);
await ev.respond(`${user.display_name}, tu as ${data.points} points.`);
});
// backtask : pas de display(), pas de finish() — l'appli vit tant que le streamer la garde ouverte.
})();Pourquoi
launch-mode: backtask: aucune UI, donc nidisplay()nifinish().user.getAppData()/setAppData()= persistance par viewer (appli-only ; lèverait une erreur en widget).- Lis l'état, mute, réécris : pas de merge automatique côté serveur.