Browse Source

Avatar Example using Url.
Readme clean up.

VagantemNumen 8 years ago
parent
commit
ecc6665887
3 changed files with 140 additions and 4 deletions
  1. 1 4
      examples/avatar/README.md
  2. 41 0
      examples/avatar/url/README.md
  3. 98 0
      examples/avatar/url/main.go

+ 1 - 4
examples/avatar/README.md

@@ -2,7 +2,7 @@
 Avatar Examples
 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.
+These example demonstrates how to utilize DiscordGo to change the account avatar using local files and urls.
 
 
 ### Build
 ### Build
 
 
@@ -15,9 +15,6 @@ cd $GOPATH/src/github.com/bwmarrin/discordgo/examples/avatar/localfile
 ```sh
 ```sh
 cd $GOPATH/src/github.com/bwmarrin/discordgo/examples/avatar/url
 cd $GOPATH/src/github.com/bwmarrin/discordgo/examples/avatar/url
 ```
 ```
-```sh
-cd $GOPATH/src/github.com/bwmarrin/discordgo/examples/avatar/command
-```
 
 
 ```sh
 ```sh
 go build
 go build

+ 41 - 0
examples/avatar/url/README.md

@@ -0,0 +1,41 @@
+<img align="right" src="http://bwmarrin.github.io/discordgo/img/discordgo.png">
+Avatar Url Example
+====
+
+This example demonstrates how to utilize DiscordGo to change the account avatar using a remote url provided via a commandline flag.
+
+### 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/url
+```
+
+```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 ``-l`` when starting the application. If the flag is not specified avatar is set to DiscordGo Logo.
+
+```sh
+./url --help
+Usage of ./url:
+  -e string
+        Account Email
+  -p string
+        Account Password
+  -t string
+        Account Token
+  -l string
+  		Link to the avatar image.
+```
+
+For example to start application with Token and a non-default avatar:
+
+```sh
+./url -t "YOUR_BOT_TOKEN" -l "http://bwmarrin.github.io/discordgo/img/discordgo.png"
+```

+ 98 - 0
examples/avatar/url/main.go

@@ -0,0 +1,98 @@
+package main
+
+import (
+	"encoding/base64"
+	"flag"
+	"fmt"
+	"io/ioutil"
+	"net/http"
+	"time"
+
+	"github.com/bwmarrin/discordgo"
+)
+
+var (
+	Email       string
+	Password    string
+	Token       string
+	Url         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(&Url, "l", "http://bwmarrin.github.io/discordgo/img/discordgo.png", "Link to the avatar image")
+	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) {
+
+	resp, err := http.Get(Url)
+	if err != nil {
+		fmt.Println("Error retrieving the file, ", err)
+		return
+	}
+
+	defer resp.Body.Close()
+
+	img, err := ioutil.ReadAll(resp.Body)
+	if err != nil {
+		fmt.Println("Error reading the response, ", err)
+		return
+	}
+
+	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("Error setting the avatar, ", 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)
+}