Selaa lähdekoodia

Added example for changing avatar using a local file.
Cleaned up. Few more.

VagantemNumen 8 vuotta sitten
vanhempi
commit
9529c44867

+ 28 - 0
examples/avatar/README.md

@@ -0,0 +1,28 @@
+<img align="right" src="http://bwmarrin.github.io/discordgo/img/discordgo.png">
+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.

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

@@ -0,0 +1,41 @@
+<img align="right" src="http://bwmarrin.github.io/discordgo/img/discordgo.png">
+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"
+```

BIN
examples/avatar/localfile/avatar.png


BIN
examples/avatar/localfile/avatar2.jpg


BIN
examples/avatar/localfile/avatar3.png


+ 87 - 0
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)
+}