Ir al contenido

Reacciones

Un comando puede responder a reacciones. Envía un mensaje con algunas reacciones, y cuando alguien reacciona con una de ellas, el mismo comando corre otra vez, con la persona que reaccionó. La reacción funciona como un botón: puede cambiar el mensaje, dar o quitar un rol, responder en el canal y más.

{{ if eq .Trigger "command" }}
{{ sendMessage nil (complexMessage
"embed" (cembed "description" "Reacciona con 🦋 para reclamar esto")
"reactions" (cslice "🦋" "🎀")) }}
{{ return }}{{ end }}
{{/* Desde aquí, alguien reaccionó */}}
{{ if eq .Reaction.Emoji "🦋" }}
{{ updateMessage (cembed "description" (print "Reclamado por " .User.Username)) }}
{{ removeReaction }}
{{ end }}
  • "reactions" en complexMessage es una lista de hasta 5 emojis. Petto los pone en el mensaje y lo recuerda por una semana.
  • .Trigger es "reaction" cuando alguien reaccionó. .Reaction.Emoji es el emoji tal como lo escribiste en la lista, y .Reaction.Added es true.
  • .User y .Member son la persona que reaccionó. .Message es el mensaje al que reaccionó, con sus embeds.
  • Solo cuentan las reacciones de personas, nunca de bots, y solo los emojis de la lista.
  • Un emoji personalizado se escribe como lo escribe Discord, <:nombre:123456789012345678>, en la lista y en la comparación.
Función En una reacción
updateMessage mensaje Cambia el mensaje al que se reaccionó. Lo que no des se queda. Solo funciona en un mensaje que envió Petto
respond mensaje Envía un mensaje en el canal de la reacción. No puede ser privado, una reacción no tiene respuesta privada
removeReaction Quita la reacción de esa persona, así se puede volver a usar
addRole, removeRole Dan o quitan un rol a quien reaccionó, con las mismas comprobaciones
sendMessage, sendDM, addReaction, dbSet… Como siempre

Si el código imprime texto, se envía en el canal, igual que respond.

  • Solo responden los mensajes del comando que los envió con "reactions". Una reacción a cualquier otro mensaje no ejecuta nada.
  • Las reacciones solo funcionan en un mensaje enviado con sendMessage, no en un mensaje directo ni en la respuesta a un clic.
  • Usar la misma reacción dos veces en muy poco tiempo se ignora.
  • Las claves de los datos guardados que empiezan con rx: están reservadas: Petto las usa para recordar estos mensajes. No cuentan para los 500 valores de un servidor.
  • Cada ejecución tiene los mismos límites que un comando.

La plantilla claim es una tarjeta de request: !claim una torta la envía con 🦋 y 🎀. 🦋 la marca como reclamada por quien reaccionó, y 🎀 solo cuenta si es quien la pidió. Instálala con !customcommand template claim y lee su código con !customcommand codeshow claim.