func ListenToDiscord(config *eqemuconfig.Config, disco *discord.Discord) (err error) { var session *discordgo.Session var guild *discordgo.Guild //log.Println("Listen to discord..") if session, err = disco.GetSession(); err != nil { log.Printf("[Discord] Failed to get instance %s: %s (Make sure bot is part of server)", config.Discord.ServerID, err.Error()) return } if guild, err = session.Guild(config.Discord.ServerID); err != nil { log.Printf("[Discord] Failed to get server %s: %s (Make sure bot is part of server)", config.Discord.ServerID, err.Error()) return } isNotAvail := true if guild.Unavailable == &isNotAvail { log.Printf("[Discord] Failed to get server %s: Server unavailable (Make sure bot is part of server, and has permission)", config.Discord.ServerID, err.Error()) return } session.StateEnabled = true session.AddHandler(messageCreate) log.Printf("[Discord] Connected\n") if err = session.Open(); err != nil { log.Printf("[Discord] Session closed: %s", err.Error()) return } select {} return }
func doWsHandshake(dg *discordgo.Session) error { var err error // open websocket... err = dg.Open() if err != nil { log.Errorf("Problem opening WS: %s", err) return err } err = dg.Handshake() if err != nil { log.Errorf("Problem handshaking WS: %s", err) } return err }
func main() { var err error // Check for Username and Password CLI arguments. if len(os.Args) != 3 { fmt.Println("You must provide username and password as arguments. See below example.") fmt.Println(os.Args[0], " [username] [password]") return } // Create a new Discord Session interface and set a handler for the // OnMessageCreate event that happens for every new message on any channel dg := discordgo.Session{ OnMessageCreate: messageCreate, } // Login to the Discord server and store the authentication token dg.Token, err = dg.Login(os.Args[1], os.Args[2]) if err != nil { fmt.Println(err) return } // Open websocket connection err = dg.Open() if err != nil { fmt.Println(err) } // Do websocket handshake. err = dg.Handshake() if err != nil { fmt.Println(err) } // Listen for events. go dg.Listen() // Simple way to keep program running until any key press. var input string fmt.Scanln(&input) return }
func main() { logInfo("Logging in...") var err error var session *discordgo.Session if accountToken == "" { logInfo("Logging in with username and password...") session, err = discordgo.New(username, password) } else { logInfo("Logging in with bot account token...") session, err = discordgo.New(accountToken) } setupHandlers(session) panicOnErr(err) logInfo("Opening session...") err = session.Open() panicOnErr(err) logInfo("Sleeping...") <-make(chan struct{}) }