Golang - 创建你自己的Slack Bot

781 阅读2分钟

又见面了!前面的几个教程主要是基于简单的概念,而我们现在要看的是一个更实际的例子--用Go建立一个定制的Slack机器人

我们现在将创建我们自己的Slack机器人,它可以向一个频道推送消息,通知所有订阅该频道的用户。

让我们开始吧!

设置Slack令牌

在我们进行主程序之前,我们需要做一些设置。

我们首先需要在Slack上创建一个新的Bot用户。要在slack上这样做,你需要创建一个新的Slack应用程序,并创建你的新Bot用户。

在你创建应用程序后,你可以选择为你的机器人用户生成OAuth令牌的选项。你需要为此添加一些OAuth作用域。一旦我们授权在我们的工作区使用这个OAuth令牌,我们就可以(最终)开始与Go客户端的API集成。

安装Slack的Go包

我们将使用客户端的slack-go 包。要安装它,我们将使用go get

go get -u github.com/slack-go/slack

在GoLang中构建我们的Slack机器人

我们将让机器人在工作区的一个新频道中发布信息。

要做到这一点,我们需要为这个新频道使用一个CHANNEL_ID

为了得到这个频道的ID,从你的浏览器中打开slack工作区,然后进入新频道。URL必须是这种格式。

复制URL中的CHANNEL_ID 部分。

package main

import (
    "log"

    "github.com/slack-go/slack"
)

func main() {

    OAUTH_TOKEN := "OAUTH_TOKEN" // Paste your bot user token here
    CHANNEL_ID := "CHANNEL_ID" // Paste your channel id here

    api := slack.New(OAUTH_TOKEN)
    attachment := slack.Attachment{
        Pretext: "Pretext",
        Text:    "Hello from GolangDocs!",
    }

    channelId, timestamp, err := api.PostMessage(
        CHANNEL_ID,
        slack.MsgOptionText("This is the main message", false),
        slack.MsgOptionAttachments(attachment),
        slack.MsgOptionAsUser(true),
    )

    if err != nil {
        log.Fatalf("%s\n", err)
    }

    log.Printf("Message successfully sent to Channel %s at %s\n", channelId, timestamp)
}

最后,在你开始你的go程序之前,我们必须明确地邀请我们的Slack机器人到这个频道。否则,你会得到一个类似这样的错误。

Error: not_in_channel

这表明机器人在该频道中仍然不存在,所以我们需要邀请机器人/应用程序。

我们可以在Slack GUI中使用/invite @YOUR_APP_NAME Slack命令来做。

一旦你最终让这个机器人运行起来,你可以探索其他各种事情,例如从API端点给予定期更新,或通过命令与真正的用户实际互动。

直到下一次!