package main import ( "fmt" "log" "os" "github.com/slack-go/slack" ) func main() { token, ok := os.LookupEnv("SLACK_TOKEN") if !ok { fmt.Println("Missing SLACK_TOKEN in environment") os.Exit(1) } api := slack.New( token, slack.OptionDebug(true), slack.OptionLog(log.New(os.Stdout, "slack-bot: ", log.Lshortfile|log.LstdFlags)), ) rtm := api.NewRTM() go rtm.ManageConnection() for msg := range rtm.IncomingEvents { fmt.Print("Event Received: ") switch ev := msg.Data.(type) { case *slack.HelloEvent: // Ignore hello case *slack.ConnectedEvent: fmt.Println("Infos:", ev.Info) fmt.Println("Connection counter:", ev.ConnectionCount) // Replace C2147483705 with your Channel ID rtm.SendMessage(rtm.NewOutgoingMessage("Hello world", "C2147483705")) case *slack.MessageEvent: fmt.Printf("Message: %v\n", ev) case *slack.PresenceChangeEvent: fmt.Printf("Presence Change: %v\n", ev) case *slack.LatencyReport: fmt.Printf("Current latency: %v\n", ev.Value) case *slack.DesktopNotificationEvent: fmt.Printf("Desktop Notification: %v\n", ev) case *slack.RTMError: fmt.Printf("Error: %s\n", ev.Error()) case *slack.InvalidAuthEvent: fmt.Printf("Invalid credentials") return default: // Ignore other events.. // fmt.Printf("Unexpected: %v\n", msg.Data) } } }