zoukankan      html  css  js  c++  java
  • slack init: Simple interaction with slack bot

    ref: https://github.com/nlopes/slack/blob/master/examples/websocket/websocket.go

    Effect:

    Send the command ads with text, which slack BOT returns.

     1 package main
     2 
     3 import (
     4     "fmt"
     5     "regexp"
     6     "github.com/nlopes/slack"
     7 )
     8 
     9 func main() {
    10 
    11     api := slack.New("your bot token")
    12     // slack.New("YOUR_TOKEN_HERE", slack.OptionDebug(true))
    13 
    14     rtm := api.NewRTM()  //Real-time message
    15     go rtm.ManageConnection()
    16 
    17     for msg := range rtm.IncomingEvents {
    18         fmt.Print("Event Received: ")
    19         switch ev := msg.Data.(type) {
    20         case *slack.HelloEvent:
    21             // Ignore hello
    22 
    23         case *slack.ConnectedEvent:
    24             fmt.Println("Infos:", ev.Info)
    25             fmt.Println("Connection counter:", ev.ConnectionCount)
    26             rtm.SendMessage(rtm.NewOutgoingMessage("Hello world", "CB9NY3BAP"))
    27 
    28         case *slack.MessageEvent:
    29             if(ev.Type == "message") {
    30                 fmt.Printf("Message: %v
    ", ev)
    31                 reg := regexp.MustCompile(`^adss`)  //Regular matching ads
    32 
    33                 if(reg.MatchString(ev.Text)) {  //Receive commands starting with ads
    34                     fmt.Println(ev.Text)
    35                     rtm.SendMessage(rtm.NewOutgoingMessage(ev.Text, ev.Channel))  //Return the received text
    36                 }
    37             }
    38 
    39         case *slack.PresenceChangeEvent:
    40             fmt.Printf("Presence Change: %v
    ", ev)
    41 
    42         case *slack.LatencyReport:
    43             fmt.Printf("Current latency: %v
    ", ev.Value)
    44 
    45         case *slack.RTMError:
    46             fmt.Printf("Error: %s
    ", ev.Error())
    47 
    48         case *slack.InvalidAuthEvent:
    49             fmt.Printf("Invalid credentials")
    50             return
    51 
    52         default:
    53 
    54             // Ignore other events..
    55              fmt.Printf("Unexpected: %v
    ", msg.Data)
    56         }
    57     }
    58 }
  • 相关阅读:
    哈希表(hash)
    并查集
    trie树(字典树)
    单调队列(滑动窗口)
    单调栈
    用数组实现栈与队列
    数组实现双链表
    数组实现单链表
    区间合并
    离散化
  • 原文地址:https://www.cnblogs.com/GuoXinxin/p/11211964.html
Copyright © 2011-2022 走看看