Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

159
Views
Cómo eliminar todos los mensajes que tienen URL que no son www.youtube.com o www.twitter.com

Soy nuevo aquí, y recientemente me he enfrentado a un gran problema con Discord Scam Links en mi servidor Discord, probé eso:

 if(message.content.includes("discordscam.com")) { message.delete() }

Pero esta es una muy mala manera de combatir las estafas ya que solo eliminará una URL específica y no otras, me di cuenta de que debería usar RegExp, pero, desafortunadamente, no entiendo cómo.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Debido a que el contenido puede incluir varias direcciones URL, deberá verificar cada palabra. Primero filtre palabras a cualquier URL. Luego, desde allí, verifique si alguna de las URL no es Twitter o YouTube.

La primera expresión regular es para url /^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)/

La siguiente expresión regular es para direcciones URL permitidas (youtube|twitter).com

 // split contents by word, check each word function shouldDelete(contents){ let urlFilter = contents.split(' ').map(word => { let t = word.match(/^(https?:\/\/)?(www\.)?[-a-zA-Z0-9@:%._\+~#=]{1,256}\.[a-zA-Z0-9()]{1,6}\b([-a-zA-Z0-9()!@:%_\+.~#?&\/\/=]*)/) return t?.length > 0 ? t[0] : null }).filter(url=>{ if(!url || /(youtube|twitter).com/g.test(url)) return else return url }) if(urlFilter.length > 0){ return `"${contents}" should delete` }else{ return `"${contents}" shouldn't delete` } } let sampleContents=[ 'twitter.com', 'youtube.com', 'discordscam.com', 'discordscam.com and youtube.com', 'https://www.youtube.com/watch?time_continue=2&v=dQw4w9WgXcQ&feature=emb_logo' ] sampleContents.forEach(item=>{ console.log(shouldDelete(item)) })

about 4 years ago · Juan Pablo Isaza Report

0

¡Espero que esto te ayude a orientarte en la dirección correcta!

Tengo una expresión regular que se valida en función de la cadena que tiene youtube o twitter, seguida de .com y no puede tener más puntos después.

 const urlTest = str => /^.*(youtube|twitter)\.com[^.]*$/.test(str); console.log(` testing "youtube.com" good? ${urlTest("youtube.com")} testing "twitter.com" good? ${urlTest("twitter.com")} testing "youtube.com.net" good? ${urlTest("youtube.com.net")} testing "https://somesite.com/nothing" good? ${urlTest("https://somesite.com/nothing")} testing "https://youtube.com/somethingelse" good? ${urlTest("https://youtube.com/somethingelse")} `);

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!