如何在 slack.client 中提及用户

How to mention user in slack.client

这可能是一个简单的问题,但我做不到。

我正在使用 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.'

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

是否有任何选项或方法可以做到这一点?
提前谢谢你。

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

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

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

谢谢大家。

发布更新的答案,因为自从 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 他们,在这种情况下 dolink_names 设置为 true。