/* may be deprecated by session.Status in discordgo */ func pollConn(s *discordgo.Session) { c := config.Get() for { time.Sleep(10 * time.Second) found := false guilds, err := s.UserGuilds() for _, g := range guilds { if g.ID == c.Guild { found = true break } } if !found { log.Warningf("Could not find membership matching guild ID. %s", c.Guild) log.Warningf("Maybe I need a new invite? Using code %s", c.InviteID) if s.Token != "" { s.Close() } return } if err != nil { log.Warningf("Could not fetch guild info %v", err) if s.Token != "" { s.Close() } return } } }
func fetchPrimaryTextChannelID(sess *discordgo.Session) string { var channelid string retryOnBadGateway(func() error { guilds, err := sess.UserGuilds() if err != nil { return err } guild, err := sess.Guild(guilds[0].ID) if err != nil { return err } channels, err := sess.GuildChannels(guild.ID) if err != nil { return err } for _, channel := range channels { channel, err = sess.Channel(channel.ID) if err != nil { return err } if channel.Type == "text" { channelid = channel.ID return nil } } return errors.New("No primary channel found") }) return channelid }
//SetGuildState sets the Guild inside the State func SetGuildState(dg *discordgo.Session) { State.InsertMode = false Guilds, _ := dg.UserGuilds() d := color.New(color.FgYellow, color.Bold) d.Printf("Select a Guild:\n") for key, guild := range Guilds { fmt.Printf("%d:%s\n", key, guild.Name) } var response int fmt.Scanf("%d\n", &response) State.Guild, _ = dg.Guild(Guilds[response].ID) Clear() State.InsertMode = true }