Compare commits

..

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

View File

@ -144,8 +144,6 @@ func (r *Robot) Run() {
for {
select {
default:
time.Sleep(200 * time.Millisecond)
case <-r.ticker.C:
r.mu.Lock()
if len(r.DelayTask) == 0 {
@ -175,23 +173,48 @@ func (r *Robot) Run() {
return
case event := <-r.EventListener.Chan:
fmt.Printf("robot listen event:%#v\n", event)
for _, ruleResponse := range r.Rules {
hit, runtime, logic := ruleResponse.Hit(event.EventType, 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,
})
switch event.EventType {
default:
time.Sleep(200 * time.Microsecond)
case ws.EventUserJoin: //用户加入聊天室
for _, ruleResponse := range r.Rules {
hit, runtime, logic := ruleResponse.Hit(ws.EventUserJoin, event.ChatUser, event.Client, "", 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
}
}
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
}
}
}