try函数无法使用discord.js检查消息和表情符号



我试图构建一个react命令,该命令只使用ID对声明的消息做出反应,消息后面会声明表情符号,但问题是它无法验证消息是否有效,我也无法让它检查表情符号是否有效。有办法解决这个问题吗?

代码:

const { MessageEmbed } = require('discord.js')
module.exports = {
name: 'react',
category: 'Staff',
aliases: [],
description: 'Reacts to a message.',
usage: 'react <messageID> <emoji>',
userperms: [],
botperms: [],
run: async (client, message, args) => {
if (message.author.bot) return;
let emoji = args[1];
let messageID = args[0];
if (!messageID) return message.reply('Please state the messageID!')
if (!emoji) return message.reply('Please state the emoji')
if (messageID && emoji) {
/*try { 
message.channel.messages.fetch(messageID).then(m => m.react(emoji));
message.channel.send('Reacted!')
} catch {
message.channel.send('This message is not valid or it isn't in the same channel!')
}*/
try {
console.log('s')
await Promise.all([message.channel.messages.fetch(_messageID)])
} catch (error) {
if (error.code == 10008) {
message.channel.send('Failed to find the message!');
return
}
}
try {
message.channel.messages.fetch(_messageID).react(emoji)
} catch (error) {
message.channel.send('Please use a valid emoji!')
}
}
}
}

所以我在我的bot中尝试你的代码。是的,它不适用于try函数。您可以做的是在代码出现错误时立即捕获它。

这是一个例子(有一点改进。你可以删除一些(

if (messageID && emoji) {
// your commented code
message.channel.messages.fetch(messageID)
.catch(err => {
// The message is not found.
if (err.code === 10008){
message.channel.send('Failed to find the message!');
return;
}
// The ID that entered is not a Message ID (Basically not a number)
if (err.code === 50035){
message.channel.send('You enter a Invalid type of Message ID!');
return;
}
});
}

编辑:用于表情符号。它将返回<pending>,因为它试图对尚未获取的消息作出反应。对不起,我的错。这应该像我现在尝试的那样工作:

message.channel.messages.fetch(messageID)
.then(msg => {
msg.react(emoji)
.catch(err => {
message.channel.send('Please use a valid emoji!');
return;         
}
});

我不知道为什么会发生这种事。我认为这是因为代码在调用(?(的catch函数之前就已经中断了

CCD_ 2和CCD_。

await Promise.all([message.channel.messages.fetch(messageID)]).catch(...)

告诉我它现在是否有效。

最新更新