我想在我的机器人中扮演某种反应角色。为此,我必须测试用户发送给机器人的消息ID是否有效。有人可以告诉我该怎么做吗?
答案 0 :(得分:0)
只要您也知道要查看的频道,就可以使用.fetch()
进行操作。
如果消息位于用户发送ID的同一频道中,则您可以使用message.channel
获取该频道,或者如果该消息位于另一个频道中,则必须使用{{1 }}。
如果您的代码位于同一频道,则可能是这样的:
message.guild.channels.cache.get(CHANNEL_ID)
或是否在其他频道中:
const msg = message.channel.messages.fetch(MESSAGE_ID)
答案 1 :(得分:0)
这对我有用(Discord.js v12)
首先,您需要定义您的机器人要在其中搜索消息的渠道。
(您可以找到它)
const targetedChannel = client.channels.cache.find((channel) => channel.name === "<Channel Name>");
然后您需要添加以下功能:
async function setMessageValue (_messageID, _targetedChannel) {
let foundMessage = new String();
// Check if the message contains only numbers (Beacause ID contains only numbers)
if (!Number(_messageID)) return 'FAIL_ID=NAN';
// Check if the Message with the targeted ID is found from the Discord.js API
try {
await Promise.all([_targetedChannel.messages.fetch(_messageID)]);
} catch (error) {
// Error: Message not found
if (error.code == 10008) {
console.error('Failed to find the message! Setting value to error message...');
foundMessage = 'FAIL_ID';
}
} finally {
// If the type of variable is string (Contains an error message inside) then just return the fail message.
if (typeof foundMessage == 'string') return foundMessage;
// Else if the type of the variable is not a string (beacause is an object with the message props) return back the targeted message object.
return _targetedChannel.messages.fetch(_messageID);
}
}
此过程完成后,只需将函数值获取到另一个变量:
const messageReturn = await setMessageValue("MessageID", targetedChannel);
然后您可以根据需要进行操作。
例如,您可以使用以下代码编辑该消息:
messageReturn.edit("<Your text here>");