From e86ae655160f648398592a268311066da1513d6e Mon Sep 17 00:00:00 2001 From: BoyChai <1972567225@qq.com> Date: Tue, 23 Aug 2022 16:04:45 +0800 Subject: [PATCH 1/2] Docking channel event reporting information --- event.go | 39 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 38 insertions(+), 1 deletion(-) diff --git a/event.go b/event.go index a9b38df..354b93c 100644 --- a/event.go +++ b/event.go @@ -30,6 +30,8 @@ type Event struct { Level string `json:"level"` Role string `json:"role"` Title string `json:"title"` + //频道 + TinyID string `json:"tiny_id"` } `json:"sender"` Anonymous struct { ID int64 `json:"id"` @@ -60,11 +62,44 @@ type Event struct { Comment string `json:"comment"` Flag string `json:"flag"` Client struct { - AppId int64 `json:"app_id"` + AppID int64 `json:"app_id"` DeviceName string `json:"device_name"` DeviceKind string `json:"device_kind"` } `json:"client"` Online bool `json:"online"` + //频道 + GuildID string `json:"guild_id"` + ChannelID string `json:"channel_id"` + CurrentReactions []struct { + EmojiID string `json:"emoji_id"` + EmojiIndex int32 `json:"emoji_index"` + EmojiType int32 `json:"emoji_type"` + EmojiName string `json:"emoji_name"` + Count int32 `json:"count"` + Clicked bool `json:"clicked"` + } `json:"current_reactions"` + OldInfo ChannelInfo `json:"old_info"` + NewInfo ChannelInfo `json:"new_info"` + ChannelInfo ChannelInfo `json:"channel_info"` +} + +// ChannelInfo 频道信息 +type ChannelInfo struct { + OwnerGuildID string `json:"owner_guild_id"` + ChannelID string `json:"channel_id"` + ChannelType int32 `json:"channel_type"` + ChannelName string `json:"channel_name"` + CreateTime int64 `json:"create_time"` + CreatorTinyID string `json:"creator_tiny_id"` + TalkPermission int32 `json:"talk_permission"` + VisibleType int32 `json:"visible_type"` + CurrentSlowMode int32 `json:"current_slow_mode"` + SlowModes []struct { + SlowModeKey int32 `json:"slow_mode_key"` + SlowModeText string `json:"slow_mode_text"` + SpeakFrequency int32 `json:"speak_frequency"` + SlowModeCircle int32 `json:"slow_mode_circle"` + } `json:"slow_modes"` } // explain 解析命令函数 @@ -120,6 +155,8 @@ func (e *Event) typeAsserts(key interface{}) (interface{}, error) { return *key.(*int64), nil case *string: return *key.(*string), nil + case *int32: + return *key.(*int32), nil default: return nil, errors.New("the current type is not supported. please feedback through issue") } From d3f4f2d664e03bb5a77e111beb5708c34555a2de Mon Sep 17 00:00:00 2001 From: BoyChai <1972567225@qq.com> Date: Wed, 24 Aug 2022 16:00:35 +0800 Subject: [PATCH 2/2] Add channel handle --- handle.go | 405 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 405 insertions(+) diff --git a/handle.go b/handle.go index d136966..9679fb7 100644 --- a/handle.go +++ b/handle.go @@ -1997,3 +1997,408 @@ func (h Handle) SetModelShow(model string, modelShow string) (map[string]interfa } return data, nil } + +//频道 + +// GetGuildServiceProfile 获取频道系统内BOT的资料 +func (h Handle) GetGuildServiceProfile() (map[string]interface{}, error) { + var data map[string]interface{} + request, err := http.Get(fmt.Sprintf(h.Agreement + "://" + h.Host + "/get_guild_service_profile")) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// GetGuildList 获取频道列表 +func (h Handle) GetGuildList() (map[string]interface{}, error) { + var data map[string]interface{} + request, err := http.Get(fmt.Sprintf(h.Agreement + "://" + h.Host + "/get_guild_list")) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// GetGuildMetaByGuest 通过访客获取频道元数据 +func (h Handle) GetGuildMetaByGuest(guildID string) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/get_guild_meta_by_guest") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// GetGuildChannelList 获取子频道列表 +func (h Handle) GetGuildChannelList(guildID string, noCache bool) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + fromData.Add("no_cache", fmt.Sprint(noCache)) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/get_guild_channel_list") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// GetGuildMemberList 获取频道成员列表 +func (h Handle) GetGuildMemberList(guildID string, nextToken string) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + fromData.Add("next_token", fmt.Sprint(nextToken)) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/get_guild_member_list") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// GetGuildMemberProfile 单独获取频道成员信息 +func (h Handle) GetGuildMemberProfile(guildID string, userID string) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + fromData.Add("user_id", userID) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/get_guild_member_profile") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// SendGuildChannelMsg 发送信息到子频道 +func (h Handle) SendGuildChannelMsg(guildID string, channelID string, message string) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + fromData.Add("channel_id", channelID) + fromData.Add("message", message) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/send_guild_channel_msg") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// GetTopicChannelFeeds 获取话题频道帖子 +func (h Handle) GetTopicChannelFeeds(guildID string, channelID string) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + fromData.Add("channel_id", channelID) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/get_topic_channel_feeds") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// DeleteGuildRole 删除频道角色 +func (h Handle) DeleteGuildRole(guildID string, roleID string) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + fromData.Add("role_id", roleID) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/delete_guild_role") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// GetGuildMsg 获取频道消息 +func (h Handle) GetGuildMsg(messageID string, noCache bool) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("message_id", messageID) + fromData.Add("no_cache", fmt.Sprint(noCache)) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/get_guild_msg") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// GetGuildRoles 获取频道角色列表 +func (h Handle) GetGuildRoles(guildID string) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/get_guild_roles") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// SetGuildMemberRole 设置用户在频道中的角色 +func (h Handle) SetGuildMemberRole(guildID string, set bool, roleID string, users string) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + fromData.Add("set", fmt.Sprint(set)) + fromData.Add("role_id", roleID) + fromData.Add("users", users) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/set_guild_member_role") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// UpdateGuildRole 设置用户在频道中的角色 +func (h Handle) UpdateGuildRole(guildID string, roleID string, name string, color string, indepedent bool) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + fromData.Add("role_id", roleID) + fromData.Add("name", name) + fromData.Add("color", color) + fromData.Add("indepedent", fmt.Sprint(indepedent)) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/update_guild_role") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +} + +// CreateGuildRole 创建频道角色 +func (h Handle) CreateGuildRole(guildID string, name string, color string, independent bool, initialUsers string) (map[string]interface{}, error) { + var data map[string]interface{} + fromData := make(url.Values) + fromData.Add("guild_id", guildID) + fromData.Add("color", color) + fromData.Add("name", name) + fromData.Add("independent", fmt.Sprint(independent)) + fromData.Add("initial_users", initialUsers) + readerData := strings.NewReader(fromData.Encode()) + addr := fmt.Sprintf(h.Agreement + "://" + h.Host + "/create_guild_role") + request, err := http.Post(addr, "application/x-www-form-urlencoded", readerData) + if err != nil { + return data, err + } + body, err := ioutil.ReadAll(request.Body) + if err != nil { + return data, err + } + defer func(Body io.ReadCloser) { + err = Body.Close() + if err != nil { + fmt.Println(err) + } + }(request.Body) + err = json.Unmarshal(body, &data) + if err != nil { + return data, err + } + return data, nil +}