Entendiendo la notación
En toda la documentación de discord.js y al solicitar ayuda en el servidor oficial, te encontrarás con diferentes tipos de notaciones. Para ayudarte a entender los textos que lees, vamos a ayudarte a entender algunas notaciones estándar.
TIP
Ten siempre presente que la notación no siempre es rigurosa. Habrán erratas, malentendidos, o contextos que harán que la notación difiera de los significados habituales.
Clases
Algunas notaciones comunes se refieren a una clase o a las propiedades, métodos o eventos de una clase. Existen muchas variaciones de estas notaciones, y son muy flexibles dependiendo de la persona, así que usa tu mejor juicio al leerlas.
La notación <Class> hace referencia a la instancia de la clase Class. Por ejemplo, un snippet como <BaseInteraction>.reply('Hola') pide que sustituya <BaseInteraction> por algún valor que sea una instancia de BaseInteraction, p. ej. interaction.reply('Hola'). También podría ser sólo un placeholder, p. ej. <id> supondría un placeholder para alguna ID.
La notación Class#foo puede hacer referencia a la propiedad foo, método o evento de la clase Class. Hay que determinar por el contexto a qué se refiera el autor. Por ejemplo:
BaseInteraction#usersignifica que debe referirse a la propiedaduseren la claseBaseInteraction.TextChannel#sendsignifica que debe referirse al métodosenden la claseTextChannel.Client#interactionCreatesignifica que debe referirse al eventointeractionCreateen la claseClient.
TIP
Recuerda que esta notación no es válida en JavaScript; es una forma abreviada de referirse a un fragmento específico de código.
A veces, la notación se amplía, lo que puede ayudar a determinar a cuál se refería el escritor. Por ejemplo, TextChannel#send(options) es definitivamente un método de TextChannel, ya que utiliza la notación de una función. Client#event:messageCreate es un evento, ya que dice que es un evento.
Lo más importante de esta notación es que el símbolo # hace referencia a que sólo se puede acceder a la propiedad, método o evento a través de una instancia de la clase. Desafortunadamente, muchos abusan de esta notación, p. ej., <Message>#send o Util#resolveColor. <Message> ya es una instnacia, así que puede no tener sentido, y resolveColor es un método estático que deberás escribirlo como Util.resolveColor. Si tienes dudas, consulta siempre la documentación.
Tipos
En la documentación de discord.js, hay firmas de tipo donde sea, como propiedades, parámetros o valores de retorno. Si no vienes de un lenguaje tipado estáticamente, es posible que no sepas qué significan determinadas notaciones.
El símbolo * significa cualquier tipo. Por ejemplo, los métodos que devuelven * significan que pueden devolver cualquier cosa, y el parámetro de tipo * puede ser cualquier cosa.
El símbolo ? significa que el tipo es anulable. Puede aparecer antes o después del tipo (p. ej. ?T o T?). Este símbolo significa que el valor puede ser del tipo T o null. Un ejemplo de esto es GuildMember#nickname; su tipo es ?string ya que un miembro puede tener o no un apodo.
La expresión T[] significa un array de T. A veces pueden verse varios corchetes [], indicando que el array es multidimensional, p. ej., string[][]
La expresión ...T significa un parámetro rest de tipo T. Esto significa que la función puede tomar cualquier cantidad de argumentos, y todos esos argumentos deben ser del tipo T.
El operador |, que puede leerse como "o", crea un tipo de unión, p. ej. A|B|C. Simplemente significa que el valor puede ser de cualquiera de los tipos indicados.
Los paréntesis angulares <> son usados para tipos genéricos o tipos parametrizados, significa que un tipo utiliza otro(s) tipo(s). La notación es A<B> donde A es el tipo y B es un parámetro de tipo.
Array<String>significa un array de strings.Promise<User>significa unaPromiseque contieneUser.Array<Promise<User|GuildMember>>significa un array dePromise, que cada uno contieneUseroGuildMember.Collection<Snowflake, User>sería unaCollection, que contiene pares clave-valor donde las claves sonSnowflakey los valores sonUser.

En esta parte de la documentación, puedes ver dos firmas de tipo, string, MessagePayload, o MessageOptions y Promise<(Message|Array<Message>)>. El significado de la palabra "or" aquí es el mismo que |