From de27ba9f2a2bb237c0f360fb57370553dd263125 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E6=BA=90=E6=96=87=E9=9B=A8?= <41315874+fumiama@users.noreply.github.com> Date: Thu, 12 Oct 2023 00:43:15 +0900 Subject: [PATCH] finish pins --- openapi.go | 4 ++-- openapi_channel.go | 2 +- openapi_codegen_getopenapiof.go | 12 ++++++++++++ openapi_codegen_putopenapiof.go | 12 ++++++++++++ openapi_pins.go | 33 +++++++++++++++++++++++++++++++++ 5 files changed, 60 insertions(+), 3 deletions(-) create mode 100644 openapi_pins.go diff --git a/openapi.go b/openapi.go index eb7f0c4..e85f9ca 100644 --- a/openapi.go +++ b/openapi.go @@ -19,7 +19,7 @@ func checkrespbaseunsafe(ptr any) error { return nil } -//go:generate go run codegen/getopenapiof/main.go ShardWSSGateway User Guild Channel Member RoleMembers GuildRoleList ChannelPermissions Message MessageSetting +//go:generate go run codegen/getopenapiof/main.go ShardWSSGateway User Guild Channel Member RoleMembers GuildRoleList ChannelPermissions Message MessageSetting PinsMessage // GetOpenAPI 从 ep 获取 json 结构化数据写到 ptr, ptr 除 Slice 外必须在开头继承 CodeMessageBase func (bot *Bot) GetOpenAPI(ep, contenttype string, ptr any) error { @@ -51,7 +51,7 @@ func (bot *Bot) GetOpenAPI(ep, contenttype string, ptr any) error { return checkrespbaseunsafe(ptr) } -//go:generate go run codegen/putopenapiof/main.go GuildRoleChannelID +//go:generate go run codegen/putopenapiof/main.go GuildRoleChannelID PinsMessage // PutOpenAPI 向 ep 发送 PUT 并获取 json 结构化数据返回写到 ptr, ptr 除 Slice 外必须在开头继承 CodeMessageBase func (bot *Bot) PutOpenAPI(ep, contenttype string, ptr any, body io.Reader) error { diff --git a/openapi_channel.go b/openapi_channel.go index 8339bc9..3891f95 100644 --- a/openapi_channel.go +++ b/openapi_channel.go @@ -86,7 +86,7 @@ type ChannelPost struct { ParentID string `json:"parent_id"` OwnerID string `json:"owner_id,omitempty"` PrivateType PrivateType `json:"private_type"` - PrivateUserIds []string `json:"private_user_ids,omitempty"` + PrivateUserIDs []string `json:"private_user_ids,omitempty"` SpeakPermission SpeakPermission `json:"speak_permission,omitempty"` ApplicationID string `json:"application_id,omitempty"` } diff --git a/openapi_codegen_getopenapiof.go b/openapi_codegen_getopenapiof.go index 425b5ac..b6648ce 100644 --- a/openapi_codegen_getopenapiof.go +++ b/openapi_codegen_getopenapiof.go @@ -125,3 +125,15 @@ func (bot *Bot) getOpenAPIofMessageSetting(ep string) (*MessageSetting, error) { } return &resp.MessageSetting, err } + +func (bot *Bot) getOpenAPIofPinsMessage(ep string) (*PinsMessage, error) { + resp := &struct { + CodeMessageBase + PinsMessage + }{} + err := bot.GetOpenAPI(ep, "", resp) + if err != nil { + err = errors.Wrap(err, getCallerFuncName()) + } + return &resp.PinsMessage, err +} diff --git a/openapi_codegen_putopenapiof.go b/openapi_codegen_putopenapiof.go index 0a41d42..e9975fe 100644 --- a/openapi_codegen_putopenapiof.go +++ b/openapi_codegen_putopenapiof.go @@ -19,3 +19,15 @@ func (bot *Bot) putOpenAPIofGuildRoleChannelID(ep string, body io.Reader) (*Guil } return &resp.GuildRoleChannelID, err } + +func (bot *Bot) putOpenAPIofPinsMessage(ep string, body io.Reader) (*PinsMessage, error) { + resp := &struct { + CodeMessageBase + PinsMessage + }{} + err := bot.PutOpenAPI(ep, "", resp, body) + if err != nil { + err = errors.Wrap(err, getCallerFuncName()) + } + return &resp.PinsMessage, err +} diff --git a/openapi_pins.go b/openapi_pins.go new file mode 100644 index 0000000..e381ec0 --- /dev/null +++ b/openapi_pins.go @@ -0,0 +1,33 @@ +package nano + +// PinsMessage 精华消息对象 +// +// https://bot.q.qq.com/wiki/develop/api/openapi/pins/model.html#pinsmessage +type PinsMessage struct { + GuildID string `json:"guild_id"` + ChannelID string `json:"channel_id"` + MessageIDs []string `json:"message_ids"` +} + +// PinMessageInChannel 添加子频道 channel_id 内的精华消息 +// +// https://bot.q.qq.com/wiki/develop/api/openapi/pins/put_pins_message.html +func (bot *Bot) PinMessageInChannel(channelid, messageid string) (*PinsMessage, error) { + return bot.putOpenAPIofPinsMessage("/channels/"+channelid+"/pins/"+messageid, nil) +} + +// UnpinMessageInChannel 子频道 channel_id 下指定 message_id 的精华消息 +// +// https://bot.q.qq.com/wiki/develop/api/openapi/pins/delete_pins_message.html +// +// 删除子频道内全部精华消息,请将 message_id 设置为 all +func (bot *Bot) UnpinMessageInChannel(channelid, messageid string) error { + return bot.DeleteOpenAPI("/channels/"+channelid+"/pins/"+messageid, "", nil) +} + +// GetPinMessagesOfChannel 获取子频道 channel_id 内的精华消息 +// +// https://bot.q.qq.com/wiki/develop/api/openapi/pins/get_pins_message.html +func (bot *Bot) GetPinMessagesOfChannel(id string) (*PinsMessage, error) { + return bot.getOpenAPIofPinsMessage("/channels/" + id + "/pins") +}