summaryrefslogtreecommitdiff
path: root/teleirc/matterbridge/vendor/github.com/Rhymen/go-whatsapp/group.go
diff options
context:
space:
mode:
authorMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
committerMistivia <i@mistivia.com>2025-11-02 15:27:18 +0800
commite9c24f4af7ed56760f6db7941827d09f6db9020b (patch)
tree62128c43b883ce5e3148113350978755779bb5de /teleirc/matterbridge/vendor/github.com/Rhymen/go-whatsapp/group.go
parent58d5e7cfda4781d8a57ec52aefd02983835c301a (diff)
add matterbridge
Diffstat (limited to 'teleirc/matterbridge/vendor/github.com/Rhymen/go-whatsapp/group.go')
-rw-r--r--teleirc/matterbridge/vendor/github.com/Rhymen/go-whatsapp/group.go90
1 files changed, 90 insertions, 0 deletions
diff --git a/teleirc/matterbridge/vendor/github.com/Rhymen/go-whatsapp/group.go b/teleirc/matterbridge/vendor/github.com/Rhymen/go-whatsapp/group.go
new file mode 100644
index 0000000..40e4515
--- /dev/null
+++ b/teleirc/matterbridge/vendor/github.com/Rhymen/go-whatsapp/group.go
@@ -0,0 +1,90 @@
+package whatsapp
+
+import (
+ "encoding/json"
+ "fmt"
+ "time"
+)
+
+func (wac *Conn) GetGroupMetaData(jid string) (<-chan string, error) {
+ data := []interface{}{"query", "GroupMetadata", jid}
+ return wac.writeJson(data)
+}
+
+func (wac *Conn) CreateGroup(subject string, participants []string) (<-chan string, error) {
+ return wac.setGroup("create", "", subject, participants)
+}
+
+func (wac *Conn) UpdateGroupSubject(subject string, jid string) (<-chan string, error) {
+ return wac.setGroup("subject", jid, subject, nil)
+}
+
+func (wac *Conn) SetAdmin(jid string, participants []string) (<-chan string, error) {
+ return wac.setGroup("promote", jid, "", participants)
+}
+
+func (wac *Conn) RemoveAdmin(jid string, participants []string) (<-chan string, error) {
+ return wac.setGroup("demote", jid, "", participants)
+}
+
+func (wac *Conn) AddMember(jid string, participants []string) (<-chan string, error) {
+ return wac.setGroup("add", jid, "", participants)
+}
+
+func (wac *Conn) RemoveMember(jid string, participants []string) (<-chan string, error) {
+ return wac.setGroup("remove", jid, "", participants)
+}
+
+func (wac *Conn) LeaveGroup(jid string) (<-chan string, error) {
+ return wac.setGroup("leave", jid, "", nil)
+}
+
+func (wac *Conn) GroupInviteLink(jid string) (string, error) {
+ request := []interface{}{"query", "inviteCode", jid}
+ ch, err := wac.writeJson(request)
+ if err != nil {
+ return "", err
+ }
+
+ var response map[string]interface{}
+
+ select {
+ case r := <-ch:
+ if err := json.Unmarshal([]byte(r), &response); err != nil {
+ return "", fmt.Errorf("error decoding response message: %v\n", err)
+ }
+ case <-time.After(wac.msgTimeout):
+ return "", fmt.Errorf("request timed out")
+ }
+
+ if int(response["status"].(float64)) != 200 {
+ return "", fmt.Errorf("request responded with %d", response["status"])
+ }
+
+ return response["code"].(string), nil
+}
+
+func (wac *Conn) GroupAcceptInviteCode(code string) (jid string, err error) {
+ request := []interface{}{"action", "invite", code}
+ ch, err := wac.writeJson(request)
+ if err != nil {
+ return "", err
+ }
+
+ var response map[string]interface{}
+
+ select {
+ case r := <-ch:
+ if err := json.Unmarshal([]byte(r), &response); err != nil {
+ return "", fmt.Errorf("error decoding response message: %v\n", err)
+ }
+ case <-time.After(wac.msgTimeout):
+ return "", fmt.Errorf("request timed out")
+ }
+
+ if int(response["status"].(float64)) != 200 {
+ return "", fmt.Errorf("request responded with %d", response["status"])
+ }
+
+ return response["gid"].(string), nil
+}