Created
May 19, 2016 15:04
-
-
Save Soreil/5358b9228b70fe5d9473debb04b2c079 to your computer and use it in GitHub Desktop.
Discord name randomizer
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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