diff --git a/examples/avatar/README.md b/examples/avatar/README.md new file mode 100644 index 0000000..858e11a --- /dev/null +++ b/examples/avatar/README.md @@ -0,0 +1,28 @@ + +Avatar Examples +==== + +These example demonstrates how to utilize DiscordGo to change the account avatar using local files and urls as well as with use of commands. + +### Build + +This assumes you already have a working Go environment setup and that DiscordGo is correctly installed on your system. +Change directory into the example you wish to build. + +```sh +cd $GOPATH/src/github.com/bwmarrin/discordgo/examples/avatar/localfile +``` +```sh +cd $GOPATH/src/github.com/bwmarrin/discordgo/examples/avatar/url +``` +```sh +cd $GOPATH/src/github.com/bwmarrin/discordgo/examples/avatar/command +``` + +```sh +go build +``` + +### Usage + +Please refer to the README.md inside the example folder for usage of that particular example. diff --git a/examples/avatar/localfile/README.md b/examples/avatar/localfile/README.md new file mode 100644 index 0000000..9a39e0a --- /dev/null +++ b/examples/avatar/localfile/README.md @@ -0,0 +1,41 @@ + +Avatar Local File Example +==== + +This example demonstrates how to utilize DiscordGo to change the account avatar using a local file inside the current working directory. + +### Build + +This assumes you already have a working Go environment setup and that DiscordGo is correctly installed on your system. +Change directory into the example. + +```sh +cd $GOPATH/src/github.com/bwmarrin/discordgo/examples/avatar/localfile +``` + +```sh +go build +``` + +### Usage + +Please place the file you wish to use as an avatar inside the directory named as ``avatar.jpg``. The filename is not important if you supply it via the commandline flag ``-f`` when starting the application. + +```sh +./localfile --help +Usage of ./ocalfile: + -e string + Account Email + -p string + Account Password + -t string + Account Token + -f string + Avatar File Name. +``` + +For example to start application with Token and a non-default avatar: + +```sh +./localfile -t "YOUR_BOT_TOKEN" -f "./pathtoavatar.jpg" +``` \ No newline at end of file diff --git a/examples/avatar/localfile/avatar.png b/examples/avatar/localfile/avatar.png new file mode 100644 index 0000000..3ee1e38 Binary files /dev/null and b/examples/avatar/localfile/avatar.png differ diff --git a/examples/avatar/localfile/avatar2.jpg b/examples/avatar/localfile/avatar2.jpg new file mode 100644 index 0000000..d0255dd Binary files /dev/null and b/examples/avatar/localfile/avatar2.jpg differ diff --git a/examples/avatar/localfile/avatar3.png b/examples/avatar/localfile/avatar3.png new file mode 100644 index 0000000..51f7aaa Binary files /dev/null and b/examples/avatar/localfile/avatar3.png differ diff --git a/examples/avatar/localfile/main.go b/examples/avatar/localfile/main.go new file mode 100644 index 0000000..ea2fb07 --- /dev/null +++ b/examples/avatar/localfile/main.go @@ -0,0 +1,87 @@ +package main + +import ( + "encoding/base64" + "flag" + "fmt" + "io/ioutil" + "net/http" + "time" + + "github.com/bwmarrin/discordgo" +) + +var ( + Email string + Password string + Token string + Avatar string + BotID string + BotUsername string +) + +func init() { + + flag.StringVar(&Email, "e", "", "Account Email") + flag.StringVar(&Password, "p", "", "Account Password") + flag.StringVar(&Token, "t", "", "Account Token") + flag.StringVar(&Avatar, "f", "./avatar.jpg", "Avatar File Name") + flag.Parse() +} + +func main() { + + // Create a new Discord session using the provided login information. + // Use discordgo.New(Token) to just use a token for login. + dg, err := discordgo.New(Email, Password, Token) + if err != nil { + fmt.Println("error creating Discord session,", err) + return + } + + // Register messageCreate as a callback for the messageCreate events. + dg.AddHandler(messageCreate) + + // Open the websocket and begin listening. + dg.Open() + + bot, err := dg.User("@me") + if err != nil { + fmt.Println("error fetching the bot details,", err) + return + } + + BotID = bot.ID + BotUsername = bot.Username + changeAvatar(dg) + + fmt.Println("Bot is now running. Press CTRL-C to exit.") + // Simple way to keep program running until CTRL-C is pressed. + <-make(chan struct{}) + return +} + +// Helper function to change the avatar +func changeAvatar(s *discordgo.Session) { + img, err := ioutil.ReadFile(Avatar) + if err != nil { + fmt.Println(err) + } + + base64 := base64.StdEncoding.EncodeToString(img) + + avatar := fmt.Sprintf("data:%s;base64,%s", http.DetectContentType(img), string(base64)) + + _, err = s.UserUpdate("", "", BotUsername, avatar, "") + if err != nil { + fmt.Println(err) + } +} + +// This function will be called (due to AddHandler above) every time a new +// message is created on any channel that the autenticated bot has access to. +func messageCreate(s *discordgo.Session, m *discordgo.MessageCreate) { + + // Print message to stdout. + fmt.Printf("%-20s %-20s\n %20s > %s\n", m.ChannelID, time.Now().Format(time.Stamp), m.Author.Username, m.Content) +}