现在,我的机器人记录了通过PM发送给我的PM。然后我在cmd上写一个答案。 (代码1)
所以,问题是,有可能使我的discord.js机器人在将消息记录到我的PM后,用我发送给我在PM上的机器人的消息回复原始用户?那就是我尝试过的(代码2)
应该是这样的:
机器人的随机用户:你是谁,为什么和我说话?
对我说:[RandomUser]你是谁,为什么你跟我说话?
我到机器人:我是服务器X的机器人,我在和你聊天,是因为Y
向RandomUser发起攻击:我是服务器X的机器人,我在和你聊天,因为Y
我希望你明白了:(
知道如何做让我的机器人等到我回答也很酷。因为我很多次碰到2个用户与机器人对话,所以当我回答第1条消息时,它会向第1个用户发送相同的消息,但发送2次。 很抱歉要求这种奇怪甚至愚蠢的事情。
代码1
console.log(`[${message.author.username}] ${message.content}`);
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.question(`Answer to ${message.author.username}: `, (answer) => {
message.author.send(`${answer}`)
.then(function (data) {
//console.log(data);
})
.catch(function (error) {
//console.error(data);
});
rl.close();
});
Code2
if (message.author.id !== autorUser.id) {
var prevUser = message.author;
autorUser.send(`${message.author.username} a [${botUser.username}]: ${message.content}`)
.then(message => {
const collector = new Discord.MessageCollector(message.channel, m => m.author.id === message.author.id, { max: 1 });
console.log(collector)
collector.on('collect', message => {
if (message.author.id === autorUser.id) {
prevUser.send(`${message.content}`);
}
});
}
)
.catch()
}
答案 0 :(得分:0)
记录RandomUser的ID并创建一个特殊的命令(或其他命令)以进行回复。
例如:
机器人的随机用户:你是谁,为什么和我说话?
对我说:[RandomUser ID ],你是谁,为什么和我说话?
我到机器人:(例如)!reply ID 我是服务器X的机器人,我在和你聊天,因为Y
向RandomUser发起攻击:我是服务器X的机器人,我在和你聊天,因为Y
获取用户ID并向他们发送消息。
如果您使用的是DiscordJS v12:
client.users.fetch("ID").then(user => user.send("some message"));
或
client.users.cache.find(user => user.id === "ID").send("some message");
如果您使用的是DiscordJS的旧版本:
client.users.find(user => user.id === "ID").send("some message");