2021-01-29 04:47:48 +00:00
|
|
|
package main
|
|
|
|
|
|
|
|
import (
|
|
|
|
"context"
|
|
|
|
"fmt"
|
2021-03-04 06:21:23 +00:00
|
|
|
"os"
|
2021-01-29 04:47:48 +00:00
|
|
|
|
|
|
|
"github.com/densestvoid/groupme"
|
|
|
|
)
|
|
|
|
|
|
|
|
// This is not a real token. Please find yours by logging
|
|
|
|
// into the GroupMe development website: https://dev.groupme.com/
|
2021-03-04 06:21:23 +00:00
|
|
|
|
|
|
|
//var authorizationToken = "ABCD"
|
|
|
|
|
|
|
|
var authorizationToken = "aa608b00a46401385ead62dd938575cf"
|
2021-01-29 04:47:48 +00:00
|
|
|
|
|
|
|
// A short program that gets the gets the first 5 groups
|
|
|
|
// the user is part of, and then the first 10 messages of
|
|
|
|
// the first group in that list
|
|
|
|
func main() {
|
|
|
|
// Create a new client with your auth token
|
|
|
|
client := groupme.NewClient(authorizationToken)
|
|
|
|
|
|
|
|
// Get the groups your user is part of
|
|
|
|
groups, err := client.IndexGroups(
|
|
|
|
context.Background(),
|
|
|
|
&groupme.GroupsQuery{
|
|
|
|
Page: 0,
|
2021-03-04 06:21:23 +00:00
|
|
|
PerPage: 1,
|
2021-01-29 04:47:48 +00:00
|
|
|
Omit: "memberships",
|
|
|
|
},
|
|
|
|
)
|
|
|
|
|
|
|
|
if err != nil {
|
|
|
|
fmt.Println(err)
|
|
|
|
return
|
|
|
|
}
|
|
|
|
|
|
|
|
// Get first 10 messages of the first group
|
|
|
|
if len(groups) == 0 {
|
|
|
|
fmt.Println("No groups")
|
2021-03-04 06:21:23 +00:00
|
|
|
os.Exit(1)
|
2021-01-29 04:47:48 +00:00
|
|
|
}
|
|
|
|
|
2021-03-04 06:21:23 +00:00
|
|
|
p := groupme.NewPushSubscription(context.Background())
|
|
|
|
go p.StartListening(context.TODO())
|
2021-01-29 04:47:48 +00:00
|
|
|
|
2021-03-04 06:21:23 +00:00
|
|
|
client = groupme.NewClient(authorizationToken)
|
2021-01-29 04:47:48 +00:00
|
|
|
|
2021-03-04 06:21:23 +00:00
|
|
|
User, _ := client.MyUser(context.Background())
|
|
|
|
p.SubscribeToUser(context.Background(), User.ID, authorizationToken)
|
2021-01-29 04:47:48 +00:00
|
|
|
|
2021-03-04 06:21:23 +00:00
|
|
|
for _, j := range groups {
|
|
|
|
p.SubscribeToGroup(context.TODO(), j.ID, authorizationToken)
|
|
|
|
}
|
|
|
|
|
|
|
|
p.AddFullHandler(Handler{User: User})
|
2021-01-29 04:47:48 +00:00
|
|
|
|
2021-03-04 06:21:23 +00:00
|
|
|
<-make(chan (struct{}))
|
|
|
|
}
|
2021-01-29 04:47:48 +00:00
|
|
|
|
2021-03-04 06:21:23 +00:00
|
|
|
type Handler struct {
|
|
|
|
User *groupme.User
|
|
|
|
}
|
2021-01-29 04:47:48 +00:00
|
|
|
|
2021-03-04 06:21:23 +00:00
|
|
|
func (h Handler) HandleError(e error) {
|
|
|
|
fmt.Println(e)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h Handler) HandleTextMessage(msg groupme.Message) {
|
2021-03-05 05:43:05 +00:00
|
|
|
fmt.Println(msg.Text, msg.Name, msg.Attachments)
|
2021-03-04 06:21:23 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
func (h Handler) HandleJoin(group groupme.ID) {
|
|
|
|
fmt.Println("User joined group with id", group.String())
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h Handler) HandleLike(id groupme.ID, by []string) {
|
|
|
|
fmt.Println(id.String(), "liked by", by)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h Handler) HandlerMembership(i groupme.ID) {
|
|
|
|
fmt.Println("Membership event on", i.String())
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h Handler) HandleGroupTopic(group groupme.ID, newTopic string) {
|
|
|
|
fmt.Println(group.String(), "has new topic of", newTopic)
|
|
|
|
}
|
|
|
|
func (h Handler) HandleGroupName(group groupme.ID, newName string) {
|
|
|
|
fmt.Println(group.String(), "has new name of", newName)
|
|
|
|
}
|
|
|
|
func (h Handler) HandleGroupAvatar(group groupme.ID, newAvatar string) {
|
|
|
|
fmt.Println(group.String(), "has new avatar url of", newAvatar)
|
|
|
|
}
|
|
|
|
|
|
|
|
func (h Handler) HandleLikeIcon(group groupme.ID, PackID, PackIndex int, Type string) {
|
|
|
|
//Not sure how to use without groupme icon packs
|
|
|
|
if len(Type) == 0 {
|
|
|
|
fmt.Println("Default like icon set")
|
|
|
|
return
|
2021-01-29 04:47:48 +00:00
|
|
|
}
|
2021-03-04 06:21:23 +00:00
|
|
|
fmt.Println(group.String(), "has new like icon of", PackID, PackIndex, Type)
|
|
|
|
}
|
2021-01-29 04:47:48 +00:00
|
|
|
|
2021-03-04 06:21:23 +00:00
|
|
|
func (h Handler) HandleNewNickname(group groupme.ID, user groupme.ID, newName string) {
|
|
|
|
fmt.Printf("In group %s, user %s has new nickname %s\n", group.String(), user.String(), newName)
|
|
|
|
}
|
|
|
|
func (h Handler) HandleNewAvatarInGroup(group groupme.ID, user groupme.ID, avatarURL string) {
|
|
|
|
if avatarURL == "" {
|
|
|
|
//get default avatar
|
|
|
|
avatarURL = h.User.ImageURL
|
|
|
|
}
|
|
|
|
fmt.Printf("In group %s, user %s has new avatar with url %s\n", group.String(), user.String(), avatarURL)
|
2021-01-29 04:47:48 +00:00
|
|
|
}
|
2021-03-05 05:43:05 +00:00
|
|
|
|
|
|
|
func (h Handler) HandleMembers(group groupme.ID, members []groupme.Member, added bool) {
|
|
|
|
action := "removed"
|
|
|
|
if added {
|
|
|
|
action = "added"
|
|
|
|
}
|
|
|
|
|
|
|
|
fmt.Printf("In group %s, users %v %s\n", group.String(), members, action)
|
|
|
|
}
|