Skip to content

Instantly share code, notes, and snippets.

@Soreil
Created May 19, 2016 15:04
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save Soreil/5358b9228b70fe5d9473debb04b2c079 to your computer and use it in GitHub Desktop.
Save Soreil/5358b9228b70fe5d9473debb04b2c079 to your computer and use it in GitHub Desktop.
Discord name randomizer
package main
import (
"flag"
"fmt"
"log"
"math/rand"
"strings"
"time"
"github.com/bwmarrin/discordgo"
)
var (
Token string
BotID string
AppID string
)
var names = []string{
"Hello",
"World",
"Friends",
}
//Map of userID to NickName
var oldNicks map[string]string
func init() {
oldNicks = make(map[string]string)
rand.Seed(time.Now().UnixNano())
flag.StringVar(&Token, "t", "", "Account Token")
flag.StringVar(&BotID, "b", "", "Bot ID")
flag.StringVar(&AppID, "a", "", "Application ID")
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)
dg, err := discordgo.New(Token)
// dg.Debug = true
if err != nil {
log.Fatal("error creating Discord session", err)
}
usr, err := dg.User("@me")
if err != nil {
log.Fatal("error getting Discord user", err)
}
BotID = usr.ID
dg.AddHandler(messageEcho)
dg.AddHandler(messageSend)
dg.AddHandler(showNicks)
dg.AddHandler(giveRandomNickName)
dg.AddHandler(resetNickNames)
dg.AddHandler(showHelp)
if err := dg.Open(); err != nil {
log.Fatal(err)
}
fmt.Println("App running")
<-make(chan struct{})
}
// 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 messageEcho(s *discordgo.Session, m *discordgo.MessageCreate) {
// Print message to stdout.
fmt.Printf("%20s %20s %20s > %s\n", m.ChannelID, time.Now().Format(time.Stamp), m.Author.Username, m.Content)
}
func messageSend(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Author.ID == BotID {
return
}
// s.ChannelMessageSend(m.ChannelID, "Thanks for your message, "+m.Author.Username)
}
func showNicks(s *discordgo.Session, m *discordgo.MessageCreate) {
if m.Author.ID == BotID {
return
}
if !strings.HasPrefix(m.Content, "!showNicks") {
return
}
s.ChannelMessageSend(m.ChannelID, "nicknames, "+fmt.Sprint(oldNicks))
}
func showHelp(s *discordgo.Session, m *discordgo.MessageCreate) {
if !strings.HasPrefix(m.Content, "!help") {
return
}
s.ChannelMessageSend(m.ChannelID, fmt.Sprint("!showNicks: show what the nickname was before we touched it. If it is empty the user did not have a custom nickname set\n", "!help: print this help text\n", "!giveNicks: Give every user a random nickname\n", "!resetNicks: restores the nicknames to the point before setting the random nicknames"))
}
func giveRandomNickName(s *discordgo.Session, m *discordgo.MessageCreate) {
ch, err := s.Channel(m.ChannelID)
if err != nil {
panic(err)
}
if !strings.HasPrefix(m.Content, "!giveNicks") {
return
}
members, err := s.GuildMembers(ch.GuildID, 0, 0)
if err != nil {
panic(err)
}
fmt.Println(members)
for _, member := range members {
if member.User.ID == m.Author.ID {
oldNicks[m.Author.ID] = member.Nick
}
}
fmt.Println(oldNicks)
// if err := s.GuildMemberNickname(ch.GuildID, m.Author.ID, members[rand.Intn(len(members))].Nick); err != nil {
if err := s.GuildMemberNickname(ch.GuildID, m.Author.ID, randomName()); err != nil {
log.Println(err)
}
}
func resetNickNames(s *discordgo.Session, m *discordgo.MessageCreate) {
ch, err := s.Channel(m.ChannelID)
if err != nil {
panic(err)
}
if !strings.HasPrefix(m.Content, "!resetNicks") {
return
}
members, err := s.GuildMembers(ch.GuildID, 0, 0)
if err != nil {
panic(err)
}
for _, member := range members {
log.Println(member.User.Username)
log.Println(member.User.ID)
log.Println(oldNicks)
//if err := s.GuildMemberNickname(ch.GuildID, member.User.ID, oldNicks[member.User.ID]); err != nil {
if err := s.GuildMemberNickname(ch.GuildID, member.User.ID, ""); err != nil {
log.Println(err)
}
}
}
func randomName() string {
return names[rand.Intn(len(names))]
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment