有没有可能 如果有人发消息 在某个频道 然后他在 5 秒后删除消息 但机器人不会删除机器人消息
下面是我的消息事件 但它不会删除任何消息 我不知道我现在必须做什么
client.on("message", async message => {
if (message.author.bot) return;
if (message.channel.type === "dm") return;
var swearWords = JSON.parse(fs.readFileSync("./data/swearWords.json"));
var msg = message.content.toLowerCase();
var embed1 = new discord.MessageEmbed()
.setColor('#0d0041')
.setDescription(`${message.author} Dat woord hoort hier niet thuis`)
for (let i = 0; i < swearWords["vloekwoorden"].length; i++) {
if (msg.includes(swearWords["vloekwoorden"][i])) {
message.delete();
return message.channel.send(embed1).then(msg => msg.delete({ timeout: 5000 }));
}
}
var channel = message.channel.id == "841337468585377882"
var prefix = botConfig.prefix;
var messageArray = message.content.split(" ");
var command = messageArray[0];
if (!message.content.startsWith(prefix)) return;
// Command handler
var arguments = messageArray.slice(1);
var commands = client.commands.get(command.slice(prefix.length));
if (commands) commands.run(client, message, arguments);
if (channel) (msg => msg.delete({ timeout: 5000 }));
});
答案 0 :(得分:0)
问题是您将 msg
与 message
混合在一起,最后您只返回一个箭头函数 (msg => msg.delete({ timeout: 5000 })
)。
此外,您可以简单地使用 fs.readFileSync
来读取和解析 JSON 文件,而不是使用 JSON.parse
读取 JSON 文件然后使用 require
解析它。>
我对您的代码进行了一些更改,使其更具可读性。
client.on('message', async (message) => {
let { prefix } = botConfig;
let CHANNEL_ID = '841337468585377882';
// you don't need to different checks :)
if (message.author.bot || message.channel.type === 'dm') return;
// you can simply require the JSON file, it'll also parse it for you
let swearWords = require('./data/swearWords.json');
let embed = new Discord.MessageEmbed()
.setColor('#0d0041')
.setDescription(`${message.author} Dat woord hoort hier niet thuis`);
// a for of loop is so much nicer
for (let word of swearWords) {
if (message.content.toLowerCase().includes(word)) {
message.delete();
return message.channel
.send(embed)
.then((msg) => msg.delete({ timeout: 5000 }));
}
}
if (!message.content.startsWith(prefix)) return;
let args = message.content.slice(prefix.length).split(/ +/);
let command = args.shift().toLowerCase();
let commandToRun = client.commands.get(command);
if (commandToRun) commandToRun.run(client, message, args);
// don't return an arrow function, delete the original message
if (message.channel.id === CHANNEL_ID)
return message.delete({ timeout: 5000 });
});