Skip to content

Instantly share code, notes, and snippets.

@rssnyder
Created May 28, 2021 20:35
Show Gist options
  • Save rssnyder/3854935614d16a8ed1d1e5d810438ae8 to your computer and use it in GitHub Desktop.
Save rssnyder/3854935614d16a8ed1d1e5d810438ae8 to your computer and use it in GitHub Desktop.
template for making a discord bot to watch changing data
package main
import (
"flag"
"fmt"
"time"
"github.com/bwmarrin/discordgo"
)
var (
frequency int
setNickname bool
token string
)
func init() {
flag.IntVar(&frequency, "frequency", 5, "seconds between gas price cycles")
flag.BoolVar(&setNickname, "setNickname", false, "wether to set nickname of bot")
flag.StringVar(&token, "token", "", "discord bot token")
flag.Parse()
}
const (
activity = "Bot Description"
)
func main() {
// create a new discord session using the provided bot token.
dg, err := discordgo.New("Bot " + token)
if err != nil {
fmt.Println("Error creating Discord session: ", err)
return
}
// show as online
err = dg.Open()
if err != nil {
fmt.Println("error opening discord connection,", err)
return
}
// set activity as desc
if setNickname {
err = dg.UpdateListeningStatus(activity)
if err != nil {
fmt.Printf("Unable to set activity: \n", err)
} else {
fmt.Println("Set activity")
}
}
// get guides for bot
guilds, err := dg.UserGuilds(100, "", "")
if err != nil {
fmt.Println("Error getting guilds: ", err)
setNickname = false
}
changeFrequency := time.Duration(frequency) * time.Second
var nickname string
for {
data, err := GetSomeData()
if err != nil {
fmt.Printf("Error getting data: %s\n", err)
continue
}
nickname = fmt.Sprintf("%s", data)
if setNickname {
for _, g := range guilds {
err = dg.GuildMemberNickname(g.ID, "@me", nickname)
if err != nil {
fmt.Printf("Error updating nickname: %s\n", err)
continue
} else {
fmt.Printf("Set nickname in %s: %s\n", g.Name, nickname)
}
}
} else {
err = dg.UpdateListeningStatus(nickname)
if err != nil {
fmt.Printf("Unable to set activity: %s\n", err)
} else {
fmt.Printf("Set activity: %s\n", nickname)
}
}
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment