消息用户一个机器人不知道
问题描述:
我正在使用Slack RTM node client和DM有点问题。假设用户加入之前从未对机器人进行过DM的频道,则用户在机器人通常会响应的频道中输入一条命令,默认情况下,机器人会以私人消息的形式回复用户。但是,bot不能这样做,因为dataStore
不包含此用户的任何DM数据。下面的代码示例...消息用户一个机器人不知道
rtm.on(RTM_EVENTS.MESSAGE, function (message) {
user = rtm.getUserById(message.user);
console.log(user); // It gets the user object fine
dm = rtm.getDMByName(user.name);
console.log(dm); // This is always undefined unless the user has DM'ed the bot previously
});
有没有办法解决这个问题?我似乎无法找到文档或代码中的任何内容来暗示可能存在。
答
您可以使用web API的im.open
方法。这里有大约你会如何与@松弛/客户端做(未经测试,提前道歉!):
var webClient = new WebClient(token);
...
rtm.on(RTM_EVENTS.MESSAGE, function (message) {
var dm = rtm.getDMById(message.user);
if (dm) {
console.log(`Already open IM: ${dm}`);
// send a message or whatever you want to do here
} else {
webClient.im.open(message.user, function (err, result) {
var dm = result.channel.id;
console.log(`Newly opened IM: ${dm}`);
// send a message or whatever you want to do here
});
}
});
我没想到做一些与Web客户端,使这项工作,但从来没有真正尝试过,我会给这明天去吧。感谢您的回复 – Catharsis
嘿只是想说,认为,这确实工作,因为我怀疑,对不起它花了我一段时间来测试它,并得到你,有一个蜱和upvote :) – Catharsis