Jadi pada dasarnya saya telah membuat log untuk mengedit pesan. Tujuan dari fungsi ini adalah untuk menulis di saluran modlog jika seseorang mengedit pesan. Saya juga ingin bot menulis pesan sebelum dan sesudah pembaruan.

Ini kodenya:

bot.on('messageUpdate', (oldMessage, newMessage) => {
    var msgup = new Discord.RichEmbed()
    .setTitle(`**MESSAGE EDIT**`)
    .addField(`Old Message:` , `${oldMessage.content}`)
    .addField(`New Message:` , `${newMessage.content}`)
    .addField(`In channel:` , oldMessage.channel)
    .addField(`By` , oldMessage.author)
    .setTimestamp()
    newMessage.channel.send(msgup).catch(console.error);

 });

Kesalahan konsol :

C:\Users\grofg\desktop\discordbot\node_modules\discord.js\src\structures\RichEmbed.js:166
    if (!/\S/.test(value)) throw new RangeError('RichEmbed field values may not be empty.');
                           ^

RangeError: RichEmbed field values may not be empty.
    at RichEmbed.addField (C:\Users\grofg\desktop\discordbot\node_modules\discord.js\src\structures\RichEmbed.js:166:34)
    at Client.bot.on (C:\Users\grofg\desktop\discordbot\index.js:455:6)
    at Client.emit (events.js:198:13)
    at MessageUpdateAction.handle (C:\Users\grofg\desktop\discordbot\node_modules\discord.js\src\client\actions\MessageUpdate.js:13:16)
    at MessageUpdateHandler.handle (C:\Users\grofg\desktop\discordbot\node_modules\discord.js\src\client\websocket\packets\handlers\MessageUpdate.js:7:34)
    at WebSocketPacketManager.handle (C:\Users\grofg\desktop\discordbot\node_modules\discord.js\src\client\websocket\packets\WebSocketPacketManager.js:105:65)
    at WebSocketConnection.onPacket (C:\Users\grofg\desktop\discordbot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:333:35)
    at WebSocketConnection.onMessage (C:\Users\grofg\desktop\discordbot\node_modules\discord.js\src\client\websocket\WebSocketConnection.js:296:17)
    at WebSocket.onMessage (C:\Users\grofg\desktop\discordbot\node_modules\ws\lib\event-target.js:120:16)
    at WebSocket.emit (events.js:198:13)

Apa yang dilakukan bot:

-Bot menjalankan fungsi persis seperti yang direncanakan. Saya memiliki semua komponen yang disematkan (Judul, 4xFields, dan stempel waktu). Di semua bidang semuanya ditulis dengan benar (pesan lama, pesan baru, saluran dan penulis) Tapi apa yang terjadi?

-Meskipun bot melakukan fungsi itu berhenti dengan kesalahan. Bot mogok dan dikatakan Field kosong meskipun itu menulis semuanya dan pasti tidak kosong.

Apa yang telah saya coba?

Pertama, saya mencoba menghapus konten dari oldMessage.content dan newMessage.content. Lagi pula itu melakukan hal yang sama.

Kedua, saya mencoba membuatnya seperti .addField('Old Message:' , oldMessage) tanpa '${}'. Saya juga telah mencoba melakukan hal yang sama tetapi dengan .content. Itu masih melakukan hal yang sama, ia melakukan pekerjaan tetapi membuat kesalahan dan crash.

Karena kesalahan konsol:

at Client.bot.on (C:\Users\grofg\desktop\discordbot\index.js:455:6) Saya pikir itu masalah pada embed itu karena baris 455 persis sama dengan .addField('Old Message:' , '${oldMessage.content}')

Terima kasih telah membaca seluruh pertanyaan dan saya akan menghargai segala jenis bantuan atau petunjuk untuk solusi masalah ini.

Hormat kami, -Luke

1
lawliet 28 Oktober 2019, 00:18

1 menjawab

Jawaban Terbaik
bot.on('messageUpdate', (oldMessage, newMessage) => {

if (oldMessage.author.bot) return;
if (oldMessage.content === newMessage.content) return;
if(!oldMessage.partial) {

var msgup = new Discord.RichEmbed()
.setTitle(`**MESSAGE EDIT**`)
.addField(`Old Message:` , `${oldMessage.content.slice(0, 950)}\n\u200B`)
.addField(`New Message:` , `${newMessage.content.slice(0, 950)}\n\u200B`)
.addField(`In channel:` , oldMessage.channel.name)
.addField(`By` , oldMessage.author.tag)
.setTimestamp()
newMessage.channel.send(msgup).catch(console.error);
};    
});

Saya yakin oldMessage yang menyebabkan ini. Inilah yang telah saya lakukan, jadi tidak boleh kosong. (Juga menambahkan .name ke message.channel Anda sehingga menunjukkan nama dengan benar, sama dengan oldMessage.author, saya menambahkan .tag) Semoga ini membantu.

1
chills 28 Oktober 2019, 22:32