是否可以通过ID通过特定用户打开DM stream
或类似内容。
我是什么意思?
当我向bot输入命令时,就像ssh终端功能:
me: DM@{user.id}
bot: {connection established message}
/**--------------------------------------------
@ and for now, every message from me, bot will deliver to {user.id} until I
@ don't send `{message_stop}` command, for example:
----------------------------------------------*/
me: "Hi, how are you?" -> client.fetchUser('user_id')
me: "Are you ok?"
me: -stop command
在每条消息的开头每次都不使用-prefix吗?
或者可能像这样实现此功能:
在服务器(公会)上创建频道以及我在其中写的每条消息都将传递给特定用户吗?
实际的问题是,如果可能的话,我应该如何操纵with client.on('trigger')
state来达到这样的效果?
就目前而言,我已经根据每条消息的请求中的前缀编写了该命令,该命令将DM消息发送给用户:
me: dm@user_id: Hello!
me: dm@user_id: How are you?
可能我应该将会话数据(user.id)存储在某个地方,以帮助bot理解我只想与特定用户通信?
答案 0 :(得分:0)
我在Discord.js
不和中收到此答案。因此,MessageCollector是可能的。我正在使用this guide来构建我的机器人with dynamic commands。所以这是我的代码:
module.exports = {
name: 'direct',
description: 'Ping!',
args: true,
execute(message, args, client) {
const u = message.content.split(/(?<=^\S+)@/)[1];
console.log(message.content);
message.channel.send(`Connection established: ${message.author.id}`);
const filter = m => m.content.includes('discord');
const collector = message.channel.createMessageCollector(filter, {
maxMatches: 10,
time: 30000,
errors: ['time']
});
collector.on('collect', m => {
console.log(`${Date.now()} Collected ${m.content}`);
client.fetchUser('user_id').then((user) => {
return user.send(`${m.content}`);
});
});
collector.on('end', collected => {
message.channel.send(`Connection cancelled with ${message.author.id}. You send ${collected.size} messages`);
console.log(`${Date.now()} Collected ${collected.size} items`);
if (collected.size === 0) {
console.log('here');
}
});
}
};
在这种情况下,您只需输入命令名称(直接),然后输入将discord
个DM发送到user_id 10次或30秒的每条消息。如果要更改它,可以使用参数。希望它能帮助任何人。
此外,我也非常感谢Discord.js社区的Monbrey#4502提供信息。