From e37945c5d58bb5ccceba66cba5d997e820bbec41 Mon Sep 17 00:00:00 2001 From: jolheiser Date: Fri, 7 Jan 2022 14:48:22 -0600 Subject: [PATCH] Add welcome handler Signed-off-by: jolheiser --- discord/discord.go | 31 +++++++++++++++++++++++++++++++ 1 file changed, 31 insertions(+) diff --git a/discord/discord.go b/discord/discord.go index 0eeb288..d708858 100644 --- a/discord/discord.go +++ b/discord/discord.go @@ -2,6 +2,7 @@ package discord import ( "fmt" + "os" "strings" "time" @@ -100,6 +101,7 @@ func Bot(cfg *config.Config, db *database.Database) (*discordgo.Session, error) } bot.AddHandler(readyHandler()) + bot.AddHandler(joinHandler(cfg)) bot.AddHandler(leaveHandler(cfg)) bot.AddHandler(commandHandler(cfg, db, sapi, twitterClient)) bot.AddHandler(messageHandler(cfg, db)) @@ -294,3 +296,32 @@ func updateStatus(s *discordgo.Session) { <-ticker.C } } + +func joinHandler(cfg *config.Config) func(s *discordgo.Session, m *discordgo.GuildMemberAdd) { + return func(s *discordgo.Session, m *discordgo.GuildMemberAdd) { + sendMessage(s, cfg.Welcome.Channel, os.Expand(cfg.Welcome.Message, func(s string) string { + switch strings.ToLower(s) { + case "user": + return m.Mention() + default: + return s + } + }), false) + + if cfg.Welcome.DM != "" { + dm, err := s.UserChannelCreate(m.User.ID) + if err != nil { + log.Err(err).Msgf("could not create DM with %s", m.User.Username) + return + } + sendMessage(s, dm.ID, os.Expand(cfg.Welcome.DM, func(s string) string { + switch strings.ToLower(s) { + case "user": + return m.Mention() + default: + return s + } + }), false) + } + } +}