Compare commits

..

No commits in common. "de557a8ac044f54722e3ad01b06ab456dc30ef51" and "5a6c8591d28c64b8bf424c789138739763ac663b" have entirely different histories.

View File

@ -144,8 +144,6 @@ func (r *Robot) Run() {
for { for {
select { select {
default:
time.Sleep(200 * time.Millisecond)
case <-r.ticker.C: case <-r.ticker.C:
r.mu.Lock() r.mu.Lock()
if len(r.DelayTask) == 0 { if len(r.DelayTask) == 0 {
@ -175,23 +173,48 @@ func (r *Robot) Run() {
return return
case event := <-r.EventListener.Chan: case event := <-r.EventListener.Chan:
fmt.Printf("robot listen event:%#v\n", event) fmt.Printf("robot listen event:%#v\n", event)
for _, ruleResponse := range r.Rules { switch event.EventType {
hit, runtime, logic := ruleResponse.Hit(event.EventType, event.ChatUser, event.Client, event.Msg, r.Info) default:
if hit { time.Sleep(200 * time.Microsecond)
if runtime.IsZero() { case ws.EventUserJoin: //用户加入聊天室
err := logic(ruleResponse.Response) for _, ruleResponse := range r.Rules {
if err != nil { hit, runtime, logic := ruleResponse.Hit(ws.EventUserJoin, event.ChatUser, event.Client, "", r.Info)
log.Printf("robot 执行任务失败:%v\n", err) if hit {
} if runtime.IsZero() {
} else { err := logic(ruleResponse.Response)
r.RegisterDelayTask(RobotTask{ if err != nil {
RunTime: runtime, log.Printf("robot 执行任务失败:%v\n", err)
Run: logic, }
Response: ruleResponse.Response, } else {
}) r.RegisterDelayTask(RobotTask{
RunTime: runtime,
Run: logic,
Response: ruleResponse.Response,
})
}
break
}
}
case ws.EventChatMessage:
for _, ruleResponse := range r.Rules {
hit, runtime, logic := ruleResponse.Hit(ws.EventChatMessage, event.ChatUser, event.Client, event.Msg, r.Info)
if hit {
if runtime.IsZero() {
err := logic(ruleResponse.Response)
if err != nil {
log.Printf("robot 执行任务失败:%v\n", err)
}
} else {
r.RegisterDelayTask(RobotTask{
RunTime: runtime,
Run: logic,
Response: ruleResponse.Response,
})
}
break
} }
break
} }
} }
} }