我们可以使用python脚本向slank发送消息吗?

Vik*_*ini 19 python python-3.x slack-api slack

在一个松散的团队中,我们可以使用python向用户发送消息吗?我见过各种API,它们向频道提供消息,但不向特定用户提供消息.我们可以这样做吗?

Dee*_*tal 23

是的,这可以做到.而不是"#channel_name"在API中使用"@user".当我们使用API​​而不是来自任何其他用户的直接消息时,用户将从slackbot接收消息.如果您想以经过身份验证的用户身份发布给该用户,请使用as_user= true.

slack.chat.post_message('@to_user',msg,username='@from_user')
Run Code Online (Sandbox Code Playgroud)

更多详情请访问https://api.slack.com/methods/chat.postMessage

  • 来自Slack docs:我们正在逐步停止支持模糊地传递"用户名"作为频道值.请始终使用类似频道的ID. (2认同)

And*_*bov 10

简单的解决方案是使用 Slack 的Web APIrequests

import requests

# slack access bot token
slack_token = "xpxb-9534042403-731932630054-KSwhrmhg87TXGuF23Z4ipTRm"

data = {
    'token': slack_token,
    'channel': 'UJ24R2MPE',    # User ID. 
    'as_user': True,
    'text': "GO Home!"
}

requests.post(url='https://slack.com/api/chat.postMessage',
              data=data)
Run Code Online (Sandbox Code Playgroud)

您可以在此处获取用户 ID:

在此处输入图片说明


run*_*ase 7

这是我使用SlackClient软件包找到的Python解决方案:

from slackclient import SlackClient

slack_token = os.environ["SLACK_API_TOKEN"]
sc = SlackClient(slack_token)

sc.api_call(
  "chat.postMessage",
  channel="@username",
  text="Test Message"
)
Run Code Online (Sandbox Code Playgroud)

https://pypi.python.org/pypi/slackclient

  • 唯一的问题是它不会显示在与用户的直接消息中,而是显示在用户的SlackBot通道中(如果使用机器人) (2认同)