From 9d9a00e070722a918f804e5aa9dd01a83d64d4b8 Mon Sep 17 00:00:00 2001 From: WindowsSov8forUs Date: Thu, 10 Oct 2024 14:42:48 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E5=B0=86=E9=A2=91=E9=81=93=20BotID=20?= =?UTF-8?q?=E4=B8=8E=E7=BE=A4=E7=BB=84=20BotID=20=E8=BF=9B=E8=A1=8C?= =?UTF-8?q?=E5=8C=BA=E5=88=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- processor/event_processor.go | 28 ++++++++++++--------- processor/login_processor.go | 14 ++++++++--- processor/process_c2c_message.go | 2 +- processor/process_channel_direct_message.go | 2 +- processor/process_channel_event.go | 2 +- processor/process_group_add_robot.go | 2 +- processor/process_group_del_robot.go | 2 +- processor/process_group_message.go | 2 +- processor/process_guild_at_message.go | 2 +- processor/process_guild_event.go | 2 +- processor/process_guild_normal_message.go | 2 +- processor/process_internal.go | 6 ++--- processor/process_member_event.go | 2 +- processor/process_message_delete.go | 2 +- processor/process_message_reaction.go | 2 +- processor/processor.go | 2 +- server/httpapi/admin.go | 2 +- server/httpapi/httpapi.go | 2 +- server/httpapi/login_get.go | 2 +- 19 files changed, 45 insertions(+), 35 deletions(-) diff --git a/processor/event_processor.go b/processor/event_processor.go index 5401d16..c52cfd1 100644 --- a/processor/event_processor.go +++ b/processor/event_processor.go @@ -20,15 +20,16 @@ func ReadyHandler(p *Processor) event.ReadyHandler { // 构建 qq 事件 id := SaveEventID(data.SessionID) + bot := GetBot("qq") satoriEvent := &operation.Event{ Id: id, Type: operation.EventTypeLoginUpdated, Platform: "qq", - SelfId: SelfId, + SelfId: bot.Id, Timestamp: time.Now().UnixMilli(), Login: &login.Login{ - User: GetBot("qq"), - SelfId: SelfId, + User: bot, + SelfId: bot.Id, Platform: "qq", Status: GetStatus("qq"), }, @@ -39,15 +40,16 @@ func ReadyHandler(p *Processor) event.ReadyHandler { // 构建 qqguild 事件 id = SaveEventID(data.SessionID) + bot = GetBot("qqguild") satoriEvent = &operation.Event{ Id: id, Type: operation.EventTypeLoginUpdated, Platform: "qqguild", - SelfId: SelfId, + SelfId: bot.Id, Timestamp: time.Now().UnixMilli(), Login: &login.Login{ - User: GetBot("qqguild"), - SelfId: SelfId, + User: bot, + SelfId: bot.Id, Platform: "qqguild", Status: GetStatus("qqguild"), }, @@ -67,15 +69,16 @@ func ErrorNotifyHandler(p *Processor) event.ErrorNotifyHandler { // 构建 qq 事件 id := SaveEventID(err.Error()) + bot := GetBot("qq") satoriEvent := &operation.Event{ Id: id, Type: operation.EventTypeLoginUpdated, Platform: "qq", - SelfId: SelfId, + SelfId: bot.Id, Timestamp: time.Now().UnixMilli(), Login: &login.Login{ - User: GetBot("qq"), - SelfId: SelfId, + User: bot, + SelfId: bot.Id, Platform: "qq", Status: GetStatus("qq"), }, @@ -86,15 +89,16 @@ func ErrorNotifyHandler(p *Processor) event.ErrorNotifyHandler { // 构建 qqguild 事件 id = SaveEventID(err.Error()) + bot = GetBot("qqguild") satoriEvent = &operation.Event{ Id: id, Type: operation.EventTypeLoginUpdated, Platform: "qqguild", - SelfId: SelfId, + SelfId: bot.Id, Timestamp: time.Now().UnixMilli(), Login: &login.Login{ - User: GetBot("qqguild"), - SelfId: SelfId, + User: bot, + SelfId: bot.Id, Platform: "qqguild", Status: GetStatus("qqguild"), }, diff --git a/processor/login_processor.go b/processor/login_processor.go index b80ad7c..fb25581 100644 --- a/processor/login_processor.go +++ b/processor/login_processor.go @@ -71,17 +71,23 @@ func getBotMe(api openapi.OpenAPI, ctx context.Context, conf *config.Config) (*d if err != nil { return nil, err } - bot := &user.User{ + qqBot := &user.User{ Id: strconv.Itoa(int(conf.Account.BotID)), Name: me.Username, Avatar: me.Avatar, IsBot: me.Bot, } - SetBot("qq", bot) - SetBot("qqguild", bot) + qqGuildBot := &user.User{ + Id: strconv.Itoa(int(conf.Account.AppID)), + Name: me.Username, + Avatar: me.Avatar, + IsBot: me.Bot, + } + SetBot("qq", qqBot) + SetBot("qqguild", qqGuildBot) SetStatus("qq", login.StatusOnline) SetStatus("qqguild", login.StatusOnline) - SelfId = strconv.Itoa(int(conf.Account.BotID)) + SelfId = me.ID return me, nil } diff --git a/processor/process_c2c_message.go b/processor/process_c2c_message.go index 5da536e..68e12c1 100644 --- a/processor/process_c2c_message.go +++ b/processor/process_c2c_message.go @@ -56,7 +56,7 @@ func (p *Processor) ProcessC2CMessage(payload *dto.WSPayload, data *dto.WSC2CMes Id: id, Type: operation.EventTypeMessageCreated, Platform: "qq", - SelfId: SelfId, + SelfId: GetBot("qq").Id, Timestamp: t.UnixMilli(), Channel: channel, Message: message, diff --git a/processor/process_channel_direct_message.go b/processor/process_channel_direct_message.go index ae0f7c4..4af6b48 100644 --- a/processor/process_channel_direct_message.go +++ b/processor/process_channel_direct_message.go @@ -78,7 +78,7 @@ func (p *Processor) ProcessChannelDirectMessage(payload *dto.WSPayload, data *dt Id: id, Type: operation.EventTypeMessageCreated, Platform: "qqguild", - SelfId: SelfId, + SelfId: GetBot("qqguild").Id, Timestamp: t.UnixMilli(), Channel: channel, Guild: guild, diff --git a/processor/process_channel_event.go b/processor/process_channel_event.go index 0fc9d42..83d5241 100644 --- a/processor/process_channel_event.go +++ b/processor/process_channel_event.go @@ -29,7 +29,7 @@ func (p *Processor) ProcessChannelEvent(payload *dto.WSPayload, data *dto.WSChan Id: id, Type: operation.EventTypeInternal, Platform: "qqguild", - SelfId: SelfId, + SelfId: GetBot("qqguild").Id, Timestamp: t, Type_: string(payload.Type), Data_: data, diff --git a/processor/process_group_add_robot.go b/processor/process_group_add_robot.go index 7c5e67b..d34aab5 100644 --- a/processor/process_group_add_robot.go +++ b/processor/process_group_add_robot.go @@ -47,7 +47,7 @@ func (p *Processor) ProcessGroupAddRobot(payload *dto.WSPayload, data *dto.Group Id: id, Type: operation.EventTypeGuildAdded, Platform: "qq", - SelfId: SelfId, + SelfId: GetBot("qq").Id, Timestamp: data.Timestamp, Channel: channel, Guild: guild, diff --git a/processor/process_group_del_robot.go b/processor/process_group_del_robot.go index d03f8d0..acf254f 100644 --- a/processor/process_group_del_robot.go +++ b/processor/process_group_del_robot.go @@ -47,7 +47,7 @@ func (p *Processor) ProcessGroupDelRobot(payload *dto.WSPayload, data *dto.Group Id: id, Type: operation.EventTypeGuildRemoved, Platform: "qq", - SelfId: SelfId, + SelfId: GetBot("qq").Id, Timestamp: data.Timestamp, Channel: channel, Guild: guild, diff --git a/processor/process_group_message.go b/processor/process_group_message.go index 3e5629f..30d5c8b 100644 --- a/processor/process_group_message.go +++ b/processor/process_group_message.go @@ -66,7 +66,7 @@ func (p *Processor) ProcessGroupMessage(payload *dto.WSPayload, data *dto.WSGrou Id: id, Type: operation.EventTypeMessageCreated, Platform: "qq", - SelfId: SelfId, + SelfId: GetBot("qq").Id, Timestamp: t.UnixMilli(), Channel: channel, Guild: guild, diff --git a/processor/process_guild_at_message.go b/processor/process_guild_at_message.go index a9a5262..89e8a15 100644 --- a/processor/process_guild_at_message.go +++ b/processor/process_guild_at_message.go @@ -76,7 +76,7 @@ func (p *Processor) ProcessGuildATMessage(payload *dto.WSPayload, data *dto.WSAT Id: id, Type: operation.EventTypeMessageCreated, Platform: "qqguild", - SelfId: SelfId, + SelfId: GetBot("qqguild").Id, Timestamp: t.UnixMilli(), Channel: channel, Guild: guild, diff --git a/processor/process_guild_event.go b/processor/process_guild_event.go index 1fd6f09..42491e8 100644 --- a/processor/process_guild_event.go +++ b/processor/process_guild_event.go @@ -68,7 +68,7 @@ func (p *Processor) ProcessGuildEvent(payload *dto.WSPayload, data *dto.WSGuildD Id: id, Type: eventType, Platform: "qqguild", - SelfId: SelfId, + SelfId: GetBot("qqguild").Id, Timestamp: t.UnixMilli(), Guild: guild, Operator: operator, diff --git a/processor/process_guild_normal_message.go b/processor/process_guild_normal_message.go index d643516..880a60a 100644 --- a/processor/process_guild_normal_message.go +++ b/processor/process_guild_normal_message.go @@ -76,7 +76,7 @@ func (p *Processor) ProcessGuildNormalMessage(payload *dto.WSPayload, data *dto. Id: id, Type: operation.EventTypeMessageCreated, Platform: "qqguild", - SelfId: SelfId, + SelfId: GetBot("qqguild").Id, Timestamp: t.UnixMilli(), Channel: channel, Guild: guild, diff --git a/processor/process_internal.go b/processor/process_internal.go index 68068b7..5fee9a2 100644 --- a/processor/process_internal.go +++ b/processor/process_internal.go @@ -33,7 +33,7 @@ func (p *Processor) ProcessQQInternal(payload *dto.WSPayload, data interface{}) Id: id, Type: operation.EventTypeInternal, Platform: "qq", - SelfId: SelfId, + SelfId: GetBot("qq").Id, Timestamp: t, Type_: string(payload.Type), Data_: data_, @@ -68,7 +68,7 @@ func (p *Processor) ProcessQQGuildInternal(payload *dto.WSPayload, data interfac Id: id, Type: operation.EventTypeInternal, Platform: "qqguild", - SelfId: SelfId, + SelfId: GetBot("qqguild").Id, Timestamp: t, Type_: string(payload.Type), Data_: data_, @@ -103,7 +103,7 @@ func (p *Processor) ProcessInteractionEvent(data *dto.WSInteractionData) error { Id: id, Type: operation.EventTypeInternal, Platform: platform, - SelfId: SelfId, + SelfId: GetBot(platform).Id, Timestamp: t, Type_: string(dto.EventInteractionCreate), Data_: data, diff --git a/processor/process_member_event.go b/processor/process_member_event.go index 32fbe62..78c2102 100644 --- a/processor/process_member_event.go +++ b/processor/process_member_event.go @@ -86,7 +86,7 @@ func (p *Processor) ProcessMemberEvent(payload *dto.WSPayload, data *dto.WSGuild Id: id, Type: eventType, Platform: "qqguild", - SelfId: SelfId, + SelfId: GetBot("qqguild").Id, Timestamp: t.UnixMilli(), Guild: guild, Member: member, diff --git a/processor/process_message_delete.go b/processor/process_message_delete.go index 62b3fa6..1f44e20 100644 --- a/processor/process_message_delete.go +++ b/processor/process_message_delete.go @@ -82,7 +82,7 @@ func (p *Processor) ProcessMessageDelete(payload *dto.WSPayload, data interface{ Id: id, Type: operation.EventTypeMessageDeleted, Platform: "qqguild", - SelfId: SelfId, + SelfId: GetBot("qqguild").Id, Timestamp: t, Channel: channel, Guild: guild, diff --git a/processor/process_message_reaction.go b/processor/process_message_reaction.go index ac72a91..abd608a 100644 --- a/processor/process_message_reaction.go +++ b/processor/process_message_reaction.go @@ -84,7 +84,7 @@ func (p *Processor) ProcessMessageReaction(payload *dto.WSPayload, data *dto.WSM Id: id, Type: eventType, Platform: "qqguild", - SelfId: SelfId, + SelfId: GetBot("qqguild").Id, Timestamp: t, Channel: channel, Guild: guild, diff --git a/processor/processor.go b/processor/processor.go index c142435..dcbd7d3 100644 --- a/processor/processor.go +++ b/processor/processor.go @@ -102,7 +102,7 @@ func GetReadyBody() *operation.ReadyBody { for platform, bot := range GetBots() { login := &login.Login{ User: bot, - SelfId: SelfId, + SelfId: GetBot(platform).Id, Platform: platform, Status: GetStatus(platform), Features: Features(), diff --git a/server/httpapi/admin.go b/server/httpapi/admin.go index b994297..dcda62a 100644 --- a/server/httpapi/admin.go +++ b/server/httpapi/admin.go @@ -37,7 +37,7 @@ func HandlerLoginList(message *AdminActionMessage) (any, APIError) { for platform, bot := range bots { login := login.Login{ User: bot, - SelfId: processor.SelfId, + SelfId: bot.Id, Platform: platform, Status: processor.GetStatus(platform), } diff --git a/server/httpapi/httpapi.go b/server/httpapi/httpapi.go index 9695b42..7d85d5e 100644 --- a/server/httpapi/httpapi.go +++ b/server/httpapi/httpapi.go @@ -283,7 +283,7 @@ func BotValidateMiddleware() gin.HandlerFunc { c.Abort() return } - if xSelfID != processor.SelfId { + if xSelfID != bot.Id { c.String(http.StatusBadRequest, `unknown self id "%s"`, xSelfID) c.Abort() return diff --git a/server/httpapi/login_get.go b/server/httpapi/login_get.go index 1cf9696..ff95159 100644 --- a/server/httpapi/login_get.go +++ b/server/httpapi/login_get.go @@ -31,7 +31,7 @@ func HandleLoginGet(api, apiv2 openapi.OpenAPI, message *ActionMessage) (any, AP // 构建机器人对象 bot := &user.User{ - Id: me.ID, + Id: processor.GetBot(message.Platform).Id, Name: me.Username, Avatar: me.Avatar, IsBot: me.Bot,