Compare commits
No commits in common. "de557a8ac044f54722e3ad01b06ab456dc30ef51" and "5a6c8591d28c64b8bf424c789138739763ac663b" have entirely different histories.
de557a8ac0
...
5a6c8591d2
@ -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
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user