¡Estoy tratando de hacer que mi Discord Bot [v13] pase por todos los miembros en el servidor y los elimine! y espacios adicionales de su nombre de usuario. Por ejemplo, el bot cambiaría el apodo de alguien de ! net-tech- a solo net-tech- eliminando el ! y espacios adicionales. hasta ahora tengo
message.guild.members.fetch().then(fetchedMembers => { const target_users = fetchedMembers.filter(member => member.user.username.startsWith("!")); ¡pero no sé cómo los cambiaría a su nombre sin ! al principio.
Podría intentar usar el reemplazo de cadena. p.ej
var name = "! net-tech-" // replace ! with "" and replace the space with "" var newName = name.replace("!","").replace(" ","")newName debería darte "net-tech-"
Alternativamente, puede usar una declaración if para verificar si el nombre comienza con "!", por ejemplo
if (name[0] === "!") { // get the string from 2nd character onwards var newName = name.slice(1) }Recuperar El primer paso sería recuperar todos los miembros, lo que ha hecho hasta ahora.
Filtrar Siguiente filtrar todos los miembros con nombres de usuario que tengan ! o cualquier espacio adicional.
Si desea reemplazar solo el ! si están al principio, usaría String#startsWith() , ¡para cualquiera ! en el nombre de usuario use String#includes() .
Para eliminar todos los espacios adicionales, puede usar la expresión regular / +/g
Traverse Loop a través de los miembros resultantes y cambiar sus apodos
const targetChar = '!'; const extraSpaces = / +/g; message.guild.members.fetch().then(fetchedMembers => { // Use startsWith() for only starting "!", Use includes for any "!" const membersToRename = Array.from(fetchedMembers.filter(m => m.user.username.includes(targetChar) || m.user.username.match(extraSpaces).length)); if (!membersToRename.length) return; // Use replace() for only the first, replaceAll() for all membersToRename.forEach(m => { const newNickname = m.user.username .replaceAll(targetChar, '') .replaceAll(extraSpaces, ''); m.setNickname(newNickname) .catch(console.error); }); });Advertencia Esto podría considerarse spam de API ya que está cambiando la información en masa, especialmente si se usa en servidores grandes.