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 }
func (p *plugin) DoAction(event plugins.BotEvent, message string) bool { c := CronCommand{} if err := c.Scan(message); err != nil { log.Printf("error %s", err) return false } switch c.Action { case AddAction, RandomAddAction: message := p.cron.AddCronCommand(event.Channel(), c) p.cron.RefreshCron(&event, event.Channel()) event.Reply(message) case DelAction, DeleteAction, StopAction: message := p.cron.DelCronCommand(event.Channel(), c) p.cron.RefreshCron(&event, event.Channel()) event.Reply(message) case ListAction: message := p.cron.ListCronCommand(event.Channel(), c) event.Reply(message) case RefreshAction: p.cron.RefreshCron(&event, event.Channel()) event.Reply("```\nrefresh ok\n```") case HelpAction: message := p.cron.HelpCronCommand(event.Channel(), c) event.Reply(message) } return false }