discord.js - 为什么 messageUpdate 和 messageDelete 会被多次触发?
问题描述
我正在尝试为我的服务器制作日志,因此当有人发送、删除或编辑消息时,机器人将在特定频道中发送包含所有信息的嵌入消息。由于某种原因,messageUpdate 和 messagedDelete 事件被多次触发,我不明白为什么。我已经尝试了一切,但没有任何效果。为什么会发生这种情况,我该如何解决?
顺便说一句,我在各个文件中都有每件事(发送、编辑、删除)的日志。在我的主文件中,这是我用于 messageUpdate 的代码:
bot.on('messageUpdate', (oldMessage, newMessage) => {
if (oldMessage.author.id === bot.user.id) return;
if(oldMessage.content === newMessage.content) return;
bot.events.get('editlogs').execute(oldMessage, newMessage);
})
这是我的编辑日志代码:
const Discord = require('discord.js');
const bot = new Discord.Client();
bot.login(process.env.TOKEN);
module.exports = {
name: 'editlogs',
description: 'logs messages that were edited.',
category: 'logs',
execute(oldMessage, newMessage){
const logsChannel = bot.channels.cache.get("743142195594526822")
const logEmbed = new Discord.MessageEmbed()
.setColor('#ffa600')
.setTitle('Message Edited')
.setAuthor(oldMessage.author.tag, oldMessage.author.avatarURL())
.setThumbnail(oldMessage.author.avatarURL())
.addFields(
{ name: 'Old Message', value: oldMessage.content},
{ name: 'New Message', value: newMessage.content},
{ name: 'Channel', value: oldMessage.channel.toString(), inline: true },
{ name: 'Author', value: oldMessage.author, inline: true },
{ name: 'Author ID', value: oldMessage.author.id},
{ name: 'Message ID', value: oldMessage.id},
{ name: 'Message', value: '[Jump To Message](' + oldMessage.url + ')'},
)
.setTimestamp()
.setFooter('Edited in ' + oldMessage.guild.toString(), oldMessage.guild.iconURL());
logsChannel.send(logEmbed);
}}
解决方案
推荐阅读
- apache - 在 localhost 上更改 Apache 侦听
- jasmine - 无法使用 Jasmine(量角器)定位元素
- javascript - 将来自 axios GET 调用的响应保存到 Firebase 函数的 JavaScript 部分中的 Firebase 数据库
- regex - 固定长度字符串的正则表达式,从数字 0 开始
- python - 从 GCP 云函数写入 GCP 数据存储区重定向到不需要的登录提示
- arrays - 使用 Google 表格过滤两列
- jenkins - 如何在jenkinsfile中创建函数来创建参数
- sql - 不同列值 SQL 的总和
- python - 循环只对嵌套列表执行一次
- r - 在 R 中使用 ggplot2 和 dplyr 生成条形图