From 88b84927f34e4a45e698e51540e307cfaee48efe Mon Sep 17 00:00:00 2001 From: cdle Date: Wed, 21 Jun 2023 22:24:58 +0800 Subject: [PATCH] x --- README.md | 6 ++++-- core/adapter.go | 15 +++++++++++---- core/plugin_impl.go | 21 ++------------------- 3 files changed, 17 insertions(+), 25 deletions(-) diff --git a/README.md b/README.md index cfa0c37..fc6d9e2 100644 --- a/README.md +++ b/README.md @@ -3,6 +3,7 @@ 一个不太有用的机器人,不生产消息,只搬运消息。 ## 特性 + - 简单易用的消息搬运功能。 - 简单强大的自定义回复功能。 - 完整支持 ECMAScript 5.1 的插件系统,基于 [otto](https://github.com/robertkrimen/otto)。 @@ -291,7 +292,7 @@ interface Sender { isAdmin(): boolean; //判断消息是否来自管理员 getPlatform(): string; //获取消息平台 getBotId(): string; //获取机器人ID - reply(content: string) Promise; //回复消息,媒体消息推荐使用CQ码实现,返回消息ID + reply(content: string): string; //回复消息,媒体消息推荐使用CQ码实现,返回消息ID recallMessage(meesageId: string | string[]): Promise; //撤回消息 kick(user_id: string): Promise; //移出群聊 unkick(user_id: string): Promise; //取消移出群聊 @@ -384,7 +385,7 @@ interface Message{ class Adapter(botplt: string, botid: string) { isAdapter(botid: string): boolean; //判断id是否为机器人 - push(message: Message): [messageId: string[], error: string]; //推送消息,无视禁言设置 + push(message: Message): string; //推送消息,无视禁言设置 getReplyMessage(): Promise; //获取一条回复消息,实际发送成功后,如果有id,请设置 message.message_id setReplyHandler(func: (message: Message): string): void; //设置回复事件处理方法,方法中返回消息ID,不推荐使用。 receive(message: Message): Sender; //接收一个消息,并返回一个Sender对象 @@ -523,5 +524,6 @@ uuid(): string; //生成uuid ``` ### 项目赞助 + 打开微信扫一扫,深入了解作者~ ![](https://raw.githubusercontent.com/cdle/sillyGirl/main/appreciate.jpg) diff --git a/core/adapter.go b/core/adapter.go index 77b3956..518159f 100644 --- a/core/adapter.go +++ b/core/adapter.go @@ -190,8 +190,11 @@ func (f *Factory) Init(botplt, botid string) { f.demo = &CustomSender{ f: f, } - if _, ok := Bots[[2]string{botplt, botid}]; ok { - // go v.Destroy() + if v, ok := Bots[[2]string{botplt, botid}]; ok { + if v.uuid != f.uuid { + go v.Destroy() + } + // console.Warn("%s机器人%s因冲突销毁!", botplt, botid) } Bots[[2]string{botplt, botid}] = f @@ -549,17 +552,21 @@ type PUSH string func (sender *CustomSender) Reply(msgs ...interface{}) (string, error) { var push = false - var content = "" var platform = sender.f.botplt var bot_id = sender.f.botid + var args = []interface{}{} for _, item := range msgs { switch item := item.(type) { case PUSH: push = true case string: - content = item + args = append(args, item) } } + if len(args) == 0 { + return "", errors.New("no content") + } + content := utils.FormatLog(args[0], args[1:]...) if !push { if IsNoReplyGroup(sender) { return "", errors.New("is no reply group") diff --git a/core/plugin_impl.go b/core/plugin_impl.go index 462288a..7e0e608 100644 --- a/core/plugin_impl.go +++ b/core/plugin_impl.go @@ -260,25 +260,8 @@ func (sender *SenderJsIplm) IsAdmin() bool { return sender.Message.IsAdmin() } -func (sender *SenderJsIplm) Reply(text string) interface{} { - // promise, resolve, reject := sender.Vm.NewPromise() - // go func() { - // defer func() { - // recover() - // }() - // if text == "" { - // resolve("") - // return - // } - // i, err := sender.Message.Reply(text) - // if err != nil { - // reject(err.Error()) - // return - // } - // resolve(i) - // }() - // return promise - i, err := sender.Message.Reply(text) +func (sender *SenderJsIplm) Reply(texts ...interface{}) interface{} { + i, err := sender.Message.Reply(texts...) if err != nil { panic(Error(sender.Vm, err)) }