Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

230
Visualizações
¿Cómo elimino el mensaje nuevo de un usuario?

Soy bastante basura en la codificación, así que necesito un poco de ayuda. Estoy tratando de codificar mi bot de discordia para eliminar los mensajes de alguien durante un minuto después de que haga clic en un emoji de reacción. Suena simple, pero para mi diminuto cerebro de guisante, no lo es. Esto es lo que tengo hasta ahora. Elimina todos los mensajes de diferentes usuarios y gremios en los que se encuentra, para siempre. Lo quiero para que solo elimine mensajes en un canal durante un minuto.

 client.once('message', async userMessage => { if (userMessage.content.startsWith('')) { botMessage = await userMessage.channel.send('Who here likes goats?') await botMessage.react("👍") await botMessage.react("👎") const filter = (reaction, user) => { return ( ["👍", "👎"].includes(reaction.emoji.name) && user.id === userMessage.author.id ); }; botMessage .awaitReactions(filter, { max: 1, time: 60000, errors: ["time"] }) .then((collected) => { const reaction = collected.first(); if (reaction.emoji.name === "👎") { userMessage.channel.send(`${userMessage.author}, how dare you. I guess no on here likes me. Hmmm, because of that I shall now eat all your messages! BAAAAAHAHAHHAHAHA!`) setTimeout(() => { client.on("message", async msg => { if (author.msg.content.startsWith("")) { userMessage.channel = await msg.delete(); } }); }, 2000); } else { userMessage.reply("Thanks!"); } }) .catch((_collected) => { userMessage.channel.send("Hehe") }); } });

Por cierto, ¡el código está en discord.js!

about 4 years ago · Juan Pablo Isaza
2 Respostas
Responde à pergunta

0

Tu problema es este trozo de código.

 setTimeout(() => { client.on("message", async msg => { if (author.msg.content.startsWith("")) { userMessage.channel = await msg.delete(); } }); }, 2000);

Así no es como se usan los eventos.

A) Su evento de mensaje está anidado dentro de otro que podría causar pérdidas de memoria.

B) Para obtener el contenido que necesita para usar msg.content , author.msg No es una cosa.

C) Asumo que su intención aquí: msg.content.startsWith("") es activar siempre la declaración if, en ese caso, ¿por qué no hacerlo if (true) ?


Así es como lo haría:

Cree un conjunto en el espacio de nombres que contendrá las identificaciones de los usuarios cuyos mensajes deben eliminarse

 const toDelete = new Set();

Si reaccionan con un 👎 agrégalos al conjunto.

 if (reaction.emoji.name === "👎") { userMessage.channel.send('Your message here'); if (!toDelete.has(userMessage.author.id)) { toDelete.add(userMessage.author.id); } }

En cada evento de mensaje, verifique si el autor del mensaje tiene su identificación en el conjunto, si es así, elimine su mensaje

 client.once('message', async userMessage => { if (toDelete.has(userMessage.author.id)) { return userMessage.delete() .catch(console.error); } if (userMessage.content.startsWith('')) { // Rest of your code
about 4 years ago · Juan Pablo Isaza Relatório

0

Creo que tu problema es entender cómo funciona todo. Tomé todo de la documentación de discord.js.

Escriba el comando de reaction para ver cómo funciona.

 const Discord = require("discord.js"); require("dotenv").config(); const TOKEN = process.env.TOKEN||"YOUR TOKEN"; const PREFIX = process.env.PREFIX||"YOUR PREFIX"; const bot = new Discord.Client(); bot.on("ready", async function(e) { console.log("Loaded!"); }) bot.on("message", async function(message) { if (message.author.bot) return; if (!message.content.startsWith(PREFIX)) return; let args = message.content.slice(PREFIX.length).trim().split(/\s+/); let command = args.splice(0, 1).toString().toLowerCase(); if (command == "reaction") { message.delete(); let msg = await message.channel.send("Click on the reaction"); await msg.react("👍"); await msg.react("👎"); let filter = (reaction, user) => { return ["👍", "👎"].includes(reaction.emoji.name) && user.id == message.author.id; } msg.awaitReactions(filter, {max: 1, time: 10000, errors: ["time"]}).then(collected => { let reaction = collected.first(); if (reaction.emoji.name == "👎") { return message.channel.send("downvote"); } return message.channel.send("upvote"); }).catch(e => { message.channel.send("user didn't vote"); }) } }) bot.login(TOKEN);
about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda