如何在slack.client中提及用户

时间:2016-11-23 18:35:31

标签: slack-api slack

这可能是一个简单的问题,但我无法让它发挥作用。

我正在使用Slack Python Api在频道中提及用户,我在这里指的是文档https://api.slack.com/methods/chat.postMessage,我的代码很简单,

from slackclient import SlackClient
sc = SlackClient(token)
message = sc.api_call(
  'chat.postMessage',
  channel='#channelname',
  text='This is a test.'
  )

这会向频道发送消息,但我找不到任何提及用户的选项。我试图将@someone放在消息中,例如

 text='@someone This is a test.'

邮件将以纯文本形式发布,但确实提到某人。 顺便说一句,我正在使用测试令牌。(或者这个功能可能只适用于授权令牌?)

有没有选择或方法可以做到这一点?
提前谢谢。

2 个答案:

答案 0 :(得分:27)

经过一番探索,我得到的解决方案非常简单。我不知道怎么会错过它。

message = sc.api_call(
  'chat.postMessage',
  link_names=1,
  channel='#channelname',
  text='@someone This is a test.'
  )

使用选项link_names=1在短信中自动链接频道或用户名。这样就可以了。

谢谢大家。

答案 1 :(得分:10)

发布更新的答案,因为此方法不再有效,因为Slack更新了他们的API。现在,您必须使用users.list发现用户的ID,或者只是在他们的个人资料中的Slack应用中查找。

然后,对于给定的 userID ,您可以通过如下设置文本来提及它们:< @ userID >。 link_names参数现在无关紧要。所以这将是现在使用的代码:

message = sc.api_call(
  'chat.postMessage',
  channel='#channelname',
  text='<@userID> This is a test.'
  )

但是,如果你想提一个用户组,那么旧的方法仍然适用 - 只需@mention它们,在这种情况下link_names设置为true。