> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sparkle.bot/llms.txt
> Use this file to discover all available pages before exploring further.

# VIP Weekly

Dans cette exemple, nous allons créer une récompense qui permettra à un utilisateur d'être VIP pendant une semaine.

```js theme={null}
export const removeVip = createTask({
  id: "remove:vip",
  run: async ({ user_id }, { twitch }) => {
    twitch.channel.removeVip(user_id)
  },
})

export const onRewardReddemed = createHook({
  event: "reward.redemption.claim",

  run: async ({ user_id, reward }, { twitch, invokeUntil }) => {
    // On filtre le déclancheur avec le bonne récompense
    if (reward.title !== "Weekly VIP") return

    twitch.channel.addVip(user_id)

    // On éxecute la task remove:vip dans 7 jours
    invokeUntil("remove:vip", "7d", { user_id })
  },
})
```

## Explication

Nous avons deux déclancheurs ici le premier est un Hook `onRewardReddemed` qui est déclanché lorsqu'un viewer récupere une récompense de point de chaine.

Et le second est une task `remove:vip` qui retire le VIP à un viewer.

Ensuite dans notre `callback` nous ajoutons le VIP à notre viewer et déclanchons la tâche `remove:vip` qui s'éxecutera dans 7 jours.
