je cherche à faire une commande pour offrir du thé à mes viewers, le but de la commande est de l’utiliser pour faire des blagues avec le jeu de mot “thé” exemple thé un amour, thé rigolo, thé salé etc. voici mon problème :
la commande twitch : !thé (nom de son choix ou rien) @(le nom du viewer)
réponse voulu de wizebot : @(l’utilisateur de la commande) offre un thé (description choisi) pour (le viewer mentionner)
commande sur wizebot pannel : @$(display_name) offre un thé $(message_clear) pour $twitch(display_name,$arg(?))
le soucis que je rencontre c’est que j’aimerais que l’on puisse écrire se que l’on veut avec 0 argument ou 9 et + après !thé (ici) mais que le nom du viewer ne soit mentionner qu’une seule fois après le “pour” et ne soit pas mentionner avec la description du thé
autre problème j’aimerais que si je ne fait aucune mention d’un viewer je voudrais un nom par défaut. Exemple de réponse : @(l’utilisateur de la commande) offre un thé pour (nom par défaut)
Bonjour,
Si j’ai bien saisi ta demande, j’ai deux options à te proposer, cas numéro 1 (avec exploitation d’API):
@$(display_name) offre un thé $custom_api(“URL_API_PERSO?desc=$(message_clear)&viewer=$twitch(display_name,$arg(?))”)
explications:
$(display_name): Affiche le pseudo de la personne qui utilise la commande.
$(message_clear): Contient le message de la commande, soit la description du thé.
$twitch(display_name,$arg(?)): Récupère le nom du viewer mentionné (si présent).
custom_api: Utilise une API perso pour gérer le cas où il n’y a pas de mention d’un viewer et éviter qu’un pseudo soit inséré dans la description du thé.
Cas numéro 2 (sans exploitation d’API):
@$(display_name) offre un thé $(param(0,)) pour $twitch(display_name,$arg(1,Félicien))
explications:
$(display_name) → Affiche le pseudo de la personne qui utilise la commande.
$(param(0,)) → Récupère tout ce qui est écrit après !thé (le type de thé).
Si rien n’est mis après !thé, ça reste vide (évite d’afficher “undefined” ou autre bug).
$twitch(display_name,$arg(1,Félicien)) → Récupère le pseudo mentionné.
S’il y a une mention, affiche le pseudo.
Sinon, affiche “Félicien” par défaut.
Aucun @ ne sera ajouté dans la description du thé car $twitch(display_name,...) ne s’applique qu’après “pour”.
Si je n’ai pas commis d’erreur, tes 2 problèmes devraient être résolus, si tu n’es pas certain, je t’encourage a utiliser la 2nde méthode.
Evidemment si cela fonctionne n’hésite pas a mettre ce sujet comme résolu.
$(eval var name="$twitch(display_name,$arg(1))"; var msg="$args(1:)"; (name.toLowerCase() === msg.split(" ")[0].toLowerCase()) ? "les serpenteaux" : name) reçoit un thé $args(2:) de $(display_name)
Bonsoir,
Alors, @papydovah, ce ne sont absolument pas des balises valides ($eval, $(param), $custom_api n’existe pas ).
C’est normal, car il n’est pas possible de ne pas avoir le premier argument avec si le second est présent, $arg(1,les serpentins) est inutile.
Vue la complexité et des différentes “configuration”, il est préférable d’utiliser le système de commande JS avec le code suivant :
let sender = JS.wizebot.command.display_name();
let message = JS.wizebot.command.message().trim();
let args = JS.wizebot.command.args('count');
let defaultReceiver = "quelqu’un de spécial";
let match = message.match(/(.*?)(?:@(\w+))?$/);
let description = (match[1] || "").trim();
let targetViewer = match[2] || defaultReceiver;
// Nettoyage pour éviter un @ mal placé dans la description
if (description.endsWith("@")) {
description = description.slice(0, -1).trim();
}
let response = `@${sender} offre un thé${description ? " " + description : ""} pour ${targetViewer}`;
JS.wizebot.send_chat_message(response);
J’aurais bien aimé utilisé le Javascript oui mais je n’ai pas pris d’abonnement. Je vais me contenter de ce que j’ai réalisé merci à vous pour vos réponses.