# Remplacer l’avatar et le nom d’utilisateur pour un message spécifique

**URL:** <https://meta.discourse.org/t/replacing-avatar-username-for-a-specific-post/253389>\
**Category:** Development\
**Created:** [Janvier 30, 2023, 8:47 UTC](https://meta.discourse.org/t/replacing-avatar-username-for-a-specific-post/253389 "2023-01-30T20:47:28Z")\
**Posts on this page:** 1\
**Showing post:** 1

<div class="post-metadata">

**Author:** ![unfairest](https://sea3.discourse-cdn.com/meta/user_avatar/meta.discourse.org/unfairest/32/288433_2.png) [@unfairest](https://meta.discourse.org/u/unfairest)\
**Post date:** [Janvier 30, 2023, 8:47 UTC](https://meta.discourse.org/t/replacing-avatar-username-for-a-specific-post/253389/1 "2023-01-30T20:47:28Z")

</div>

Le problème : je souhaite que les utilisateurs puissent publier en tant que personnages de jeu de rôle. J’aimerais qu’ils puissent insérer un modèle dans un message — quelque chose comme ce qui suit :

```plaintext
[wrap="characterpost"]
[characterav]https://image.link.example.png[/characterav]
[charactername][[Nom du personnage]][/charactername]
[/wrap]

```

Et ensuite utiliser un script pour que l’image remplace l’avatar d’origine et que le lien vers le sujet du nom du personnage soit placé devant le nom d’utilisateur. Par exemple, si le message affiche normalement « Nom d’utilisateur », je souhaite le remplacer par « Nom du personnage joué par Nom d’utilisateur ».  
(Le « Nom du personnage » inclurait un lien vers un sujet contenant la fiche du personnage, en espérant utiliser simplement le composant de thème des liens wiki pour la facilité d’utilisation.)

J’ai collé un squelette de message dans un Codepen et j’ai réussi à écrire un peu de JavaScript qui ferait exactement cela. Cependant, quand il a fallu l’ajouter dans un décorateur de message et le faire fonctionner en direct avec l’API, je suis arrivé à une impasse.

Voici ce que j’ai actuellement dans common\>header :

```js
<script type="text/discourse-plugin" version="0.8">
api.decorateCookedElement(
  element => {
    
    // trouver la balise characterpost dans le message
    const characterPost = element.querySelector('[data-wrap="characterpost"]');
	
    // trouver le parent de la balise characterpost, qui contient l'avatar et le nom d'utilisateur
    const characterPostParent = characterPost.closest('article');
	
    // le rendre rouge pour voir si ça fonctionne
    characterPostParent.style.backgroundColor = "red";
    
  },
  {
    id: 'render-character-post', onlyStream: true, afterAdopt: true
  }
);
</script>

```

Cela provoque une erreur. Est-il possible d’accéder à l’élément enveloppe « article » des messages en utilisant decorateCookedElement afin que je puisse accéder au nom d’utilisateur et à l’avatar ? Si ce n’est pas le cas, comment puis-je m’y prendre ?

---

_[View the full topic](https://meta.discourse.org/t/replacing-avatar-username-for-a-specific-post/253389)._
