This commit is contained in:
1-6
2023-07-27 00:24:47 +08:00
parent 63365c1506
commit 615e543845
12 changed files with 204 additions and 244 deletions
+8 -15
View File
@@ -692,8 +692,10 @@ func (sender *CustomSender) Action(options map[string]interface{}) (interface{},
one = any one = any
} }
if one != nil { if one != nil {
one.Handle(&Faker{ one.Handle(&CustomSender{
Type: "action", F: &Factory{
botplt: "action",
},
}, func(vm *goja.Runtime) { }, func(vm *goja.Runtime) {
obj := vm.NewObject() obj := vm.NewObject()
for k, v := range options { for k, v := range options {
@@ -798,8 +800,10 @@ func (sender *CustomSender) Reply(msgs ...interface{}) (string, error) {
} }
if one != nil { if one != nil {
message_id := "" message_id := ""
one.Handle(&Faker{ one.Handle(&CustomSender{
Type: "message", F: &Factory{
botplt: "message",
},
}, func(vm *goja.Runtime) { }, func(vm *goja.Runtime) {
obj := vm.NewObject() obj := vm.NewObject()
for k, v := range msg { for k, v := range msg {
@@ -935,14 +939,3 @@ func (sender *CustomSender) IsAdmin() bool {
} }
return sender.F.isAdmin(sender.GetUserID()) return sender.F.isAdmin(sender.GetUserID())
} }
func (sender *CustomSender) GetID() string {
return sender.id
}
func (sender *CustomSender) SetID() string {
sender.id = utils.GenUUID()
sender.CreatedAt = time.Now()
senders.Store(sender.id, sender)
return sender.id
}
+135 -186
View File
@@ -3,7 +3,6 @@ package core
import ( import (
"errors" "errors"
"fmt" "fmt"
"reflect"
"regexp" "regexp"
"strings" "strings"
"sync" "sync"
@@ -26,127 +25,127 @@ type Faker struct {
Admin bool Admin bool
} }
func (sender *Faker) Listen() chan string { //func (sender *Faker) Listen() chan string {
return sender.Carry // return sender.Carry
} // }
func (sender *Faker) GetContent() string { //func (sender *Faker) GetContent() string {
if sender.Fsps.Content != "" { // if sender.Fsps.Content != "" {
return sender.Fsps.Content // return sender.Fsps.Content
} // }
return sender.Message // return sender.Message
} // }
func (sender *Faker) GetUserID() string { //func (sender *Faker) GetUserID() string {
return sender.UserID // return sender.UserID
} // }
func (sender *Faker) GetBotID() string { //func (sender *Faker) GetBotID() string {
return "" // return ""
} // }
func (sender *Faker) GetChatID() string { //func (sender *Faker) GetChatID() string {
return sender.ChatID // return sender.ChatID
} // }
func (sender *Faker) GetImType() string { //func (sender *Faker) GetImType() string {
if sender.Type == "" { // if sender.Type == "" {
return "fake" // return "fake"
} // }
return sender.Type // return sender.Type
} // }
func (sender *Faker) GetMessageID() string { //func (sender *Faker) GetMessageID() string {
return "" // return ""
} // }
func (sender *Faker) GetUserName() string { //func (sender *Faker) GetUserName() string {
return "" // return ""
} // }
func (sender *Faker) GetChatName() string { //func (sender *Faker) GetChatName() string {
return "" // return ""
} // }
func (sender *Faker) IsReply() bool { //func (sender *Faker) IsReply() bool {
return false // return false
} // }
func (sender *Faker) GetReplyUserID() int { // //func (sender *Faker) GetReplyUserID() int {
return 0 // return 0
} // }
func (sender *Faker) GetRawMessage() interface{} { // //func (sender *Faker) GetRawMessage() interface{} {
return sender.Message // return sender.Message
} // }
func (sender *Faker) IsAdmin() bool { // //func (sender *Faker) IsAdmin() bool {
return sender.Admin // return sender.Admin
} // }
func (sender *Faker) IsMedia() bool { // //func (sender *Faker) IsMedia() bool {
return false // return false
} // }
func (sender *Faker) Reply(msgs ...interface{}) (string, error) { //func (sender *Faker) Reply(msgs ...interface{}) (string, error) {
rt := "" // rt := ""
for _, msg := range msgs { // for _, msg := range msgs {
switch msg := msg.(type) { // switch msg := msg.(type) {
case []byte: // case []byte:
rt = (string(msg)) // rt = (string(msg))
case string: // case string:
rt = msg // rt = msg
} // }
} // }
{ // {
for _, v := range regexp.MustCompile(`\[CQ:image,file=([^\[\]]+)\]`).FindAllStringSubmatch(rt, -1) { // for _, v := range regexp.MustCompile(`\[CQ:image,file=([^\[\]]+)\]`).FindAllStringSubmatch(rt, -1) {
// qr := qrcode2console.NewQRCode2ConsoleWithUrl(v[1], true) // // qr := qrcode2console.NewQRCode2ConsoleWithUrl(v[1], true)
// defer qr.Output() // // defer qr.Output()
rt = strings.Replace(rt, fmt.Sprintf(`[CQ:image,file=%s]`, v[1]), "", -1) // rt = strings.Replace(rt, fmt.Sprintf(`[CQ:image,file=%s]`, v[1]), "", -1)
} // }
} // }
// if rt != "" && n != nil { // if rt != "" && n != nil {
// NotifyMasters(rt) // NotifyMasters(rt)
// } // }
// if rt != "" && sender.Carry != nil { // if rt != "" && sender.Carry != nil {
// sender.Carry <- rt // sender.Carry <- rt
// } // }
if rt != "" && sender.Type == "terminal" { // if rt != "" && sender.Type == "terminal" {
fmt.Printf("\x1b[%dm%s \x1b[0m\n", 31, rt) // fmt.Printf("\x1b[%dm%s \x1b[0m\n", 31, rt)
} // }
return "", nil // return "", nil
} // }
func (sender *Faker) Delete() error { //func (sender *Faker) Delete() error {
return nil // return nil
} // }
func (sender *Faker) Disappear(lifetime ...time.Duration) { //func (sender *Faker) Disappear(lifetime ...time.Duration) {
} // }
func (sender *Faker) Finish() { //func (sender *Faker) Finish() {
if sender.Carry != nil { // if sender.Carry != nil {
close(sender.Carry) // close(sender.Carry)
} // }
} // }
func (sender *Faker) Copy() common.Sender { //func (sender *Faker) Copy() common.Sender {
new := reflect.Indirect(reflect.ValueOf(interface{}(sender))).Interface().(Faker) // new := reflect.Indirect(reflect.ValueOf(interface{}(sender))).Interface().(Faker)
return &new // return &new
} // }
func (sender *Faker) GroupKick(uid string, reject_add_request bool) error { //func (sender *Faker) GroupKick(uid string, reject_add_request bool) error {
return nil // return nil
} // }
func (sender *Faker) GroupBan(uid string, duration int) error { //func (sender *Faker) GroupBan(uid string, duration int) error {
return nil // return nil
} // }
type BaseSender struct { type BaseSender struct {
matches [][]string matches [][]string
@@ -165,30 +164,30 @@ type BaseSender struct {
plugin_id string plugin_id string
} }
func (sender *BaseSender) SetPluginID(plugin_id string) { func (sender *CustomSender) SetPluginID(plugin_id string) {
sender.plugin_id = plugin_id sender.plugin_id = plugin_id
} }
func (sender *BaseSender) GetPluginID() string { func (sender *CustomSender) GetPluginID() string {
return sender.plugin_id return sender.plugin_id
} }
func (sender *BaseSender) SetLevel(l int) { func (sender *CustomSender) SetLevel(l int) {
sender.level = l sender.level = l
} }
func (sender *BaseSender) GetLevel() int { func (sender *CustomSender) GetLevel() int {
return sender.level return sender.level
} }
func (sender *BaseSender) SetMark(mark interface{}) { func (sender *CustomSender) SetMark(mark interface{}) {
sender.mark = mark sender.mark = mark
} }
func (sender *BaseSender) GetMark() interface{} { func (sender *CustomSender) GetMark() interface{} {
return sender.mark return sender.mark
} }
func (sender *BaseSender) SetExpandMessageInfo(emf map[string]interface{}) { func (sender *CustomSender) SetExpandMessageInfo(emf map[string]interface{}) {
if sender.emf == nil { if sender.emf == nil {
sender.emf = map[string]interface{}{} sender.emf = map[string]interface{}{}
} }
@@ -197,21 +196,21 @@ func (sender *BaseSender) SetExpandMessageInfo(emf map[string]interface{}) {
} }
} }
func (sender *BaseSender) GetExpandMessageInfo() map[string]interface{} { func (sender *CustomSender) GetExpandMessageInfo() map[string]interface{} {
if sender.emf == nil { if sender.emf == nil {
sender.emf = map[string]interface{}{} sender.emf = map[string]interface{}{}
} }
return sender.emf return sender.emf
} }
func (sender *BaseSender) SetVar(key string, value interface{}) { func (sender *CustomSender) SetVar(key string, value interface{}) {
if sender.emf == nil { if sender.emf == nil {
sender.emf = map[string]interface{}{} sender.emf = map[string]interface{}{}
} }
sender.emf[key] = value sender.emf[key] = value
} }
func (sender *BaseSender) GetVar(key string) interface{} { func (sender *CustomSender) GetVar(key string) interface{} {
if sender.emf == nil { if sender.emf == nil {
sender.emf = map[string]interface{}{} sender.emf = map[string]interface{}{}
} }
@@ -222,45 +221,45 @@ func (sender *BaseSender) GetVar(key string) interface{} {
return v return v
} }
func (sender *BaseSender) SetMatch(ss []string) { func (sender *CustomSender) SetMatch(ss []string) {
sender.matches = [][]string{ss} sender.matches = [][]string{ss}
} }
func (sender *BaseSender) SetParams(ss []string) { func (sender *CustomSender) SetParams(ss []string) {
sender.params = ss sender.params = ss
} }
func (sender *BaseSender) SetAllMatch(ss [][]string) { func (sender *CustomSender) SetAllMatch(ss [][]string) {
sender.matches = ss sender.matches = ss
} }
func (sender *BaseSender) SetContent(content string) { func (sender *CustomSender) SetContent(content string) {
sender.Fsps.Content = content sender.Fsps.Content = content
} }
func (sender *BaseSender) SetFsps(fsps *common.FakerSenderParams) { func (sender *CustomSender) SetFsps(fsps *common.FakerSenderParams) {
sender.Fsps = *fsps sender.Fsps = *fsps
} }
func (sender *BaseSender) GetMatch() []string { func (sender *CustomSender) GetMatch() []string {
return sender.matches[0] return sender.matches[0]
} }
func (sender *BaseSender) GetAllMatch() [][]string { func (sender *CustomSender) GetAllMatch() [][]string {
return sender.matches return sender.matches
} }
func (sender *BaseSender) Continue() { func (sender *CustomSender) Continue() {
sender.goon = true sender.goon = true
} }
func (sender *BaseSender) IsContinue() bool { func (sender *CustomSender) IsContinue() bool {
return sender.goon return sender.goon
} }
func (sender *BaseSender) ClearContinue() { func (sender *CustomSender) ClearContinue() {
sender.goon = false sender.goon = false
} }
func (sender *BaseSender) Get(i interface{}) string { func (sender *CustomSender) Get(i interface{}) string {
switch i := i.(type) { switch i := i.(type) {
case int: case int:
if len(sender.matches) == 0 { if len(sender.matches) == 0 {
@@ -281,7 +280,7 @@ func (sender *BaseSender) Get(i interface{}) string {
return "" return ""
} }
func (sender *BaseSender) Delete() error { func (sender *CustomSender) Delete() error {
return nil return nil
} }
@@ -289,120 +288,70 @@ func (sender *BaseSender) Disappear(lifetime ...time.Duration) {
} }
func (sender *BaseSender) Finish() { func (sender *CustomSender) Finish() {
sender.IsFinished = true sender.IsFinished = true
} }
func (sender *BaseSender) IsMedia() bool { func (sender *CustomSender) IsMedia() bool {
return false return false
} }
func (sender *BaseSender) GetRawMessage() interface{} { func (sender *CustomSender) GetRawMessage() interface{} {
return nil return nil
} }
func (sender *BaseSender) IsReply() bool { func (sender *CustomSender) IsReply() bool {
return false return false
} }
func (sender *BaseSender) GetMessageID() string { func (sender *CustomSender) Push(msg map[string]string) (string, error) {
return ""
}
func (sender *BaseSender) RecallMessage(...interface{}) {
}
func (sender *BaseSender) GetUserID() string {
return ""
}
func (sender *BaseSender) GetChatID() string {
return ""
}
func (sender *BaseSender) Push(msg map[string]string) (string, error) {
return "", nil return "", nil
} }
func (sender *BaseSender) GetImType() string {
return ""
}
func (sender *BaseSender) GroupKick(uid string, reject_add_request bool) error { func (sender *CustomSender) GroupUnkick(uid string) error {
return nil return nil
} }
func (sender *BaseSender) GroupUnkick(uid string) error { func (sender *CustomSender) GetReplyUserID() int {
return nil
}
func (sender *BaseSender) GroupBan(uid string, duration int) error {
return nil
}
func (sender *BaseSender) GroupUnban(uid string) error {
return nil
}
func (sender *BaseSender) GetUserName() string {
return ""
}
func (sender *BaseSender) IsAdmin() bool {
return false
}
func (sender *BaseSender) GetChatName() string {
return ""
}
func (sender *BaseSender) GetReplyUserID() int {
return 0 return 0
} }
func (sender *BaseSender) GetReplyMessageID() int { func (sender *CustomSender) GetReplyMessageID() int {
return 0 return 0
} }
func (sender *BaseSender) AtLast() { func (sender *CustomSender) AtLast() {
sender.Atlast = true sender.Atlast = true
} }
func (sender *BaseSender) UAtLast() { func (sender *CustomSender) UAtLast() {
sender.Atlast = false sender.Atlast = false
} }
func (sender *BaseSender) Stop() { func (sender *CustomSender) Stop() {
panic("stop") panic("stop")
} }
func (sender *BaseSender) Event() map[string]interface{} { func (sender *CustomSender) GetID() string {
return nil
}
func (sender *BaseSender) Action(map[string]interface{}) (interface{}, error) {
return nil, nil
}
func (sender *BaseSender) GetID() string {
return sender.id return sender.id
} }
func (sender *BaseSender) SetID() string { func (sender *CustomSender) SetID() string {
sender.id = utils.GenUUID() sender.id = utils.GenUUID()
sender.CreatedAt = time.Now() sender.CreatedAt = time.Now()
senders.Store(sender.id, sender) senders.Store(sender.id, sender)
return sender.id return sender.id
} }
func (sender *BaseSender) GetTime() time.Time { func (sender *CustomSender) GetTime() time.Time {
return sender.CreatedAt return sender.CreatedAt
} }
func (sender *BaseSender) IsAtLast() bool { func (sender *CustomSender) IsAtLast() bool {
return sender.Atlast return sender.Atlast
} }
func (sender *BaseSender) MessagesToSend() string { func (sender *CustomSender) MessagesToSend() string {
return strings.Join(sender.ToSendMessages, "\n") return strings.Join(sender.ToSendMessages, "\n")
} }
@@ -507,7 +456,7 @@ type Switch []string
var listenCounter int64 var listenCounter int64
func (s *BaseSender) Await(message common.Sender, callback func(common.Sender) interface{}, params ...interface{}) interface{} { func (s *CustomSender) Await(message common.Sender, callback func(common.Sender) interface{}, params ...interface{}) interface{} {
timeout := time.Hour * 999999 timeout := time.Hour * 999999
var handleErr func(error) var handleErr func(error)
var persistent = false var persistent = false
+25 -22
View File
@@ -378,8 +378,10 @@ func AddCommand(cmds []*common.Function) {
go func(f *common.Function) { go func(f *common.Function) {
time.Sleep(time.Second) time.Sleep(time.Second)
console.Log("初始化%v服务", f.Title) console.Log("初始化%v服务", f.Title)
f.Handle(&Faker{ f.Handle(&CustomSender{
Type: "*", F: &Factory{
botplt: "*",
},
}, nil) }, nil)
}(cmds[j]) }(cmds[j])
} }
@@ -393,9 +395,10 @@ func AddCommand(cmds []*common.Function) {
Cron = "0 " + Cron Cron = "0 " + Cron
} }
cronId, err := CRON.AddFunc(Cron, func() { cronId, err := CRON.AddFunc(Cron, func() {
cmds[j].Handle(&Faker{ cmds[j].Handle(&CustomSender{
Admin: true, F: &Factory{
Type: plt, botplt: plt,
},
}, nil) }, nil)
}) })
if err == nil { if err == nil {
@@ -540,23 +543,23 @@ func HandleMessage(sender common.Sender) {
sender.SetMatch(res[1:]) sender.SetMatch(res[1:])
sender.SetParams(c.Function.Params[i]) sender.SetParams(c.Function.Params[i])
mtd = true mtd = true
if f, ok := c.Message.(*Faker); ok && f.Carry != nil { // if f, ok := c.Message.(*CustomSender); ok && f.Carry != nil {
if s1, o := sender.(*Faker); o && s1.Carry != nil { // if s1, o := sender.(*CustomSender); o && s1.Carry != nil {
f.Carry = s1.Carry // f.Carry = s1.Carry
c := make(chan string) // c := make(chan string)
oc := s1.Carry // oc := s1.Carry
s1.Carry = c // s1.Carry = c
go func() { // go func() {
for { // for {
r, o := <-c // r, o := <-c
if !o { // if !o {
break // break
} // }
oc <- r // oc <- r
} // }
}() // }()
} // }
} // }
c.Chan <- sender c.Chan <- sender
sender.Reply(<-c.Result) sender.Reply(<-c.Result)
if !sender.IsContinue() { if !sender.IsContinue() {
+1 -1
View File
@@ -24,7 +24,7 @@ type Language struct {
} }
var plugin_dir = utils.ExecPath + "/plugins" var plugin_dir = utils.ExecPath + "/plugins"
var release = "20230726" var release = "20230727"
var languages = []Language{ var languages = []Language{
{ {
+3 -1
View File
@@ -313,7 +313,9 @@ func AddNodePlugin(path, name string) error {
} }
senders.Store(id, s) senders.Store(id, s)
defer senders.Delete(id) defer func() {
fmt.Println("senders.Delete(id)")
}()
defer processes.Delete(cmd) defer processes.Delete(cmd)
err = cmd.Wait() err = cmd.Wait()
if err != nil { if err != nil {
+5 -3
View File
@@ -34,7 +34,6 @@ var senders sync.Map
// } // }
func GetSender(uuid string) (common.Sender, error) { func GetSender(uuid string) (common.Sender, error) {
if uuid == "" { if uuid == "" {
return &CustomSender{ return &CustomSender{
F: &Factory{ F: &Factory{
@@ -43,7 +42,6 @@ func GetSender(uuid string) (common.Sender, error) {
}, nil }, nil
} }
v, ok := senders.Load(uuid) v, ok := senders.Load(uuid)
// fmt.Println("uuid", uuid, v, ok)
if !ok { if !ok {
return nil, errors.New("not found sender") return nil, errors.New("not found sender")
} }
@@ -201,10 +199,13 @@ func (sg *SillyGirlService) SenderListen(stream srpc.SillyGirlService_SenderList
if req.Persistent { if req.Persistent {
persistent = req.Persistent persistent = req.Persistent
options = append(options, "persistent") options = append(options, "persistent")
} else {
options = append(options, func(err error) {
stream.Send(&srpc.SenderListenResponse{Echo: ""})
})
} }
go s.Await(s, func(s common.Sender) interface{} { go s.Await(s, func(s common.Sender) interface{} {
id := s.SetID() id := s.SetID()
defer senders.Delete(id)
echo := utils.GenUUID() echo := utils.GenUUID()
ch := make(chan string) ch := make(chan string)
echos.Store(echo, ch) echos.Store(echo, ch)
@@ -219,6 +220,7 @@ func (sg *SillyGirlService) SenderListen(stream srpc.SillyGirlService_SenderList
stream.Send(&srpc.SenderListenResponse{Echo: "END"}) stream.Send(&srpc.SenderListenResponse{Echo: "END"})
} }
} else { } else {
defer senders.Delete(id)
value = strings.Replace(value, "go_again_", "", 1) value = strings.Replace(value, "go_again_", "", 1)
} }
return value return value
+4 -2
View File
@@ -243,8 +243,10 @@ func initWeb() {
} }
if (matched || c.Request.URL.Path == path) && (c.Request.Method == method || "ANY" == method) { if (matched || c.Request.URL.Path == path) && (c.Request.Method == method || "ANY" == method) {
req.handled = true req.handled = true
function.Handle(&Faker{ function.Handle(&CustomSender{
Type: "http", F: &Factory{
botplt: "http",
},
}, func(vm *goja.Runtime) { }, func(vm *goja.Runtime) {
vm.Set("res", res) vm.Set("res", res)
vm.Set("req", req) vm.Set("req", req)
+13 -6
View File
@@ -109,8 +109,11 @@ func handleWebsocket(c *gin.Context) {
req._event = "connect" req._event = "connect"
wc.conn = ws wc.conn = ws
go function.Handle(&Faker{
Type: "websocket", go function.Handle(&CustomSender{
F: &Factory{
botplt: "websocket",
},
}, func(vm *goja.Runtime) { }, func(vm *goja.Runtime) {
vm.Set("res", &Response{ vm.Set("res", &Response{
c: c, c: c,
@@ -173,8 +176,10 @@ func handleWebsocket(c *gin.Context) {
function = f2 function = f2
} }
} }
function.Handle(&Faker{ function.Handle(&CustomSender{
Type: "websocket", F: &Factory{
botplt: "websocket",
},
}, func(vm *goja.Runtime) { }, func(vm *goja.Runtime) {
vm.Set("res", &Response{ vm.Set("res", &Response{
c: c, c: c,
@@ -193,8 +198,10 @@ func handleWebsocket(c *gin.Context) {
function = f2 function = f2
} }
} }
go function.Handle(&Faker{ go function.Handle(&CustomSender{
Type: "websocket", F: &Factory{
botplt: "websocket",
},
}, func(vm *goja.Runtime) { }, func(vm *goja.Runtime) {
vm.Set("res", &Response{ vm.Set("res", &Response{
c: c, c: c,
+2 -2
View File
@@ -24,8 +24,8 @@ macos编译:
cp /Users/a1-6/Code/sillyplus/proto3/dist/sillygirl.js /Users/a1-6/Code/node/node-v18.16.1/lib/sillygirl.js && cd /Users/a1-6/Code/node/node-v18.16.1 && ninja -C out/Release && cp out/Release/node /Users/a1-6/Code/nodes/node_darwin_arm64 cp /Users/a1-6/Code/sillyplus/proto3/dist/sillygirl.js /Users/a1-6/Code/node/node-v18.16.1/lib/sillygirl.js && cd /Users/a1-6/Code/node/node-v18.16.1 && ninja -C out/Release && cp out/Release/node /Users/a1-6/Code/nodes/node_darwin_arm64
#压缩 #压缩
cd /Users/a1-6/Code/nodes/node_darwin_arm64 && zip node_darwin_arm64.zip node cd /Users/a1-6/Code/nodes/node_darwin_arm64
cd /Users/a1-6/Code/nodes/node_linux_amd64 && zip node_linux_amd64.zip node cd /Users/a1-6/Code/nodes/node_linux_amd64
## ##
git add . && git commit -m "x" && git push git add . && git commit -m "x" && git push
+1 -1
View File
@@ -28,7 +28,7 @@ declare class Sender {
allow_users?: string[]; allow_users?: string[];
prohibit_users?: string[]; prohibit_users?: string[];
persistent?: boolean; persistent?: boolean;
}): Promise<Sender>; }): Promise<Sender | undefined>;
holdOn(str: string): string; holdOn(str: string): string;
reply(content: string): Promise<string | undefined>; reply(content: string): Promise<string | undefined>;
action(options: any): Promise<any | undefined>; action(options: any): Promise<any | undefined>;
+4 -2
View File
@@ -237,8 +237,8 @@ class Sender {
call.cancel(); call.cancel();
return; return;
} }
let s = new Sender(response.uuid); let s = response.uuid ? new Sender(response.uuid) : undefined;
if (options?.handle) { if (options?.handle && s) {
// console.log(`options?.handle`, options.persistent) // console.log(`options?.handle`, options.persistent)
let obj = options?.handle(s); let obj = options?.handle(s);
if (typeof obj == "string") { if (typeof obj == "string") {
@@ -538,7 +538,9 @@ class Adapter {
this.bot_id = options.bot_id; this.bot_id = options.bot_id;
if (options.replyHandler) { if (options.replyHandler) {
const call = client.AdapterRegist(); const call = client.AdapterRegist();
// let callback: any = ;
call.on("data", async (response) => { call.on("data", async (response) => {
// console.log("start on data")
let message = JSON.parse(response.value); let message = JSON.parse(response.value);
const { echo, __type__ } = message; const { echo, __type__ } = message;
delete message.__type__; delete message.__type__;
+3 -3
View File
@@ -230,7 +230,7 @@ class Sender {
allow_users?: string[]; // 用户白名单 allow_users?: string[]; // 用户白名单
prohibit_users?: string[]; // 群聊白名单 prohibit_users?: string[]; // 群聊白名单
persistent?: boolean; //持久化监听 persistent?: boolean; //持久化监听
}): Promise<Sender> { }): Promise<Sender | undefined> {
return new Promise( return new Promise(
async (resolve, reject) => { async (resolve, reject) => {
let params: any = { let params: any = {
@@ -259,8 +259,8 @@ class Sender {
call.cancel(); call.cancel();
return; return;
} }
let s = new Sender(response.uuid); let s = response.uuid ? new Sender(response.uuid) : undefined;
if (options?.handle) { if (options?.handle && s) {
// console.log(`options?.handle`, options.persistent) // console.log(`options?.handle`, options.persistent)
let obj = options?.handle(s); let obj = options?.handle(s);
if (typeof obj == "string") { if (typeof obj == "string") {