本文整理匯總了Golang中github.com/nlopes/slack.RTM.ManageConnection方法的典型用法代碼示例。如果您正苦於以下問題:Golang RTM.ManageConnection方法的具體用法?Golang RTM.ManageConnection怎麽用?Golang RTM.ManageConnection使用的例子?那麽, 這裏精選的方法代碼示例或許可以為您提供幫助。您也可以進一步了解該方法所在類github.com/nlopes/slack.RTM
的用法示例。
在下文中一共展示了RTM.ManageConnection方法的1個代碼示例,這些例子默認根據受歡迎程度排序。您可以為喜歡或者感覺有用的代碼點讚,您的評價將有助於係統推薦出更棒的Golang代碼示例。
示例1: slacker
func slacker(rtm *slack.RTM) {
go rtm.ManageConnection()
greeted := false
userId := ""
Loop:
for {
select {
case msg := <-rtm.IncomingEvents:
switch event := msg.Data.(type) {
case *slack.ConnectedEvent:
// say hello in the first channel we're in
if len(event.Info.Channels) > 0 {
if !greeted {
channel := event.Info.Channels[0]
rtm.SendMessage(rtm.NewOutgoingMessage("gohome bot reporting for duty!", channel.ID))
}
greeted = true
}
// remember our id
userId = event.Info.User.ID
case *slack.MessageEvent:
if event.User == userId || event.BotID != "" {
// ignore messages from self or bots
continue
}
// send the message as a query
log.Println("Querying:", event.Text)
ch := services.QueryChannel(event.Text, time.Duration(5)*time.Second)
gotResponse := false
for ev := range ch {
// send back responses
message := ev.StringField("message")
if message == "" {
message = ev.String()
}
rtm.SendMessage(rtm.NewOutgoingMessage(message, event.Channel))
gotResponse = true
}
if !gotResponse {
rtm.SendMessage(rtm.NewOutgoingMessage("Sorry, nothing answered!", event.Channel))
}
case *slack.RTMError:
fmt.Printf("Error: %s\n", event.Error())
case *slack.InvalidAuthEvent:
fmt.Printf("Invalid credentials")
break Loop
default:
// Ignore other events..
// case *slack.HelloEvent:
// case *slack.PresenceChangeEvent:
// case *slack.LatencyReport:
// fmt.Printf("Unexpected: %v\n", msg.Data)
}
}
}
}