/
setavatar.go
46 lines (35 loc) · 912 Bytes
/
setavatar.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
package owner
import (
"encoding/base64"
"fmt"
"github.com/sapphire-cord/sapphire"
"io/ioutil"
"net/http"
)
// Sets the bot's avatar.
// Usage: <avatar:string>
// Aliases: setav, changeavatar, changeav
func OwnerSetAvatar(ctx *sapphire.CommandContext) {
res, err := http.Get(ctx.Arg(0).AsString())
if err != nil {
ctx.Reply("Error: %s", err)
return
}
defer res.Body.Close()
if res.StatusCode != 200 {
ctx.Reply("URL returned non-200 response: %d (%s)", res.StatusCode, res.Status)
}
buf, err := ioutil.ReadAll(res.Body)
if err != nil {
ctx.Reply("Error: %s", err)
return
}
contentType := http.DetectContentType(buf)
base64img := base64.StdEncoding.EncodeToString(buf)
_, err = ctx.Session.UserUpdate("", "", "", fmt.Sprintf("data:%s;base64,%s", contentType, base64img), "")
if err != nil {
ctx.Reply("Error: %s", err)
return
}
ctx.Reply("Done! Changed my avatar.")
}