func (r plugin) DoAction(event plugins.BotEvent, message string) bool { // Contextを取得 redisKey := buildRoomContextKey(event.Channel()) dialogueCtx, _ := r.repository.Load(redisKey) // 雑談API叩く name := event.SenderName() req := docomo.DialogueRequest{ Utt: &message, Context: &dialogueCtx, Nickname: &name, } res, err := r.client.Dialogue.Get(req, false) if err != nil { event.Reply("はて?") return true } else if res.RequestError.PolicyException.MessageID != "" { event.Reply(fmt.Sprintf("%s: %s", res.RequestError.PolicyException.MessageID, res.RequestError.PolicyException.Text), ) return true } // 結果を返す event.Reply(res.Utt) // Contextを保存 if dialogueCtx == "" { r.repository.Save(redisKey, res.Context) } return false // next ok }