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

103
Visualizações
Discord.js recupera reacciones más antiguas

Tengo un pequeño problema con el evento discord.js messageReactionAdd . Así que leí que este evento solo se activa para mensajes obtenidos, pero necesito activar este evento también para mensajes más antiguos. Así que lo probé con eventos sin procesar, pero esto no funcionó, así que usé parciales. Pero esto tampoco funciona, ¿alguien puede ayudarme con esto?

No hay ningún mensaje de error o algo así. Simplemente no pasó nada

 const { Console } = require("console") const { Client, SystemChannelFlags, Guild, Message } = require("discord.js") const { MessageEmbed } = require("discord.js") const client = new Client({intents: ['GUILDS','DIRECT_MESSAGES', 'DIRECT_MESSAGE_TYPING', 'GUILD_MESSAGE_REACTIONS']}, { partials: ['MESSAGE', 'CHANNEL', 'REACTION'] }) const prefix = "!" var fs = require('fs') client.once("ready", () => { console.log(`Ready! ${client.user.tag} ist jetzt Bereit...`) client.user.setActivity({name: "!info - For more Information!", type: "PLAYING"}) client.on('messageReactionAdd', async (reaction, user, channel) => { if (reaction.partial) { try { await reaction.fetch(); } catch (error) { console.error('Something went wrong when fetching the message:', error); return; } } if(reaction.message.channel.id == channelID) { if(reaction.emoji.name === '✅' ) { console.log(`[${hours}:${minutes}:${seconds}]${user.tag}: ist nun online!`) const role = reaction.message.guild.roles.cache.find(r => r.id === '889124672875159582') const roleremove = reaction.message.guild.roles.cache.find(r => r.id === '889124737958170634') const { guild } = reaction.message const member = guild.members.cache.find(member => member.id === user.id) member.roles.add(role) member.roles.remove(roleremove) } }
about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Debe recuperar los mensajes una vez que se active el evento ready . Puede hacer esto guardando las identificaciones de los mensajes y las identificaciones de los canales donde se envían los mensajes. Una vez que se activa el evento ready , deberá buscar los mensajes en los canales a los que se envían. Entonces, por ejemplo, ha guardado este archivo json con las identificaciones del mensaje y las identificaciones del canal:

 [{ "messageid": "1234567890", "channelid": "1234567890" }, { "messageid": "0987654321", "channelid": "1234567890" }]

Entonces, por ejemplo, desea obtener los mensajes con la identificación 1234567890 y 0987654321 . Luego, lo que deberá hacer es importar este archivo json en su archivo principal y revisar todos los datos. Aquí hay un ejemplo:

 const data = require('./path-to-your-json-file.json'); const { Client } = require('discord.js'); const client = new Client(); // Add here your intents etc. const wait = (ms) => { return new Promise(resolve => { setTimeout(resolve, ms); }); }; // A wait function to make sure that you won't get a rate-limit while fetching the messages client.once('ready', async () => { for(var i = 0; i < data.length; i++){ const messageInfo = data[i]; var channel = client.channels.cache.get(messageInfo.channelid); if(!channel) return; await wait(200); try{ await channel.messages.fetch(messageInfo.messageid); } catch(error){ console.log(`Error while fetching message with id ${messageInfo.messageid}`, error); } } });

Ahora ha obtenido todos los mensajes y estos mensajes deberían poder detectar una reacción en estos mensajes.

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