From 0acb15b1387c2baeae21011e75eaac86a15a6d78 Mon Sep 17 00:00:00 2001 From: kageru Date: Sat, 2 Jun 2018 14:03:16 +0200 Subject: [PATCH] properly handle users who disabled DMs --- config.json | 1 + main.go | 13 +++++++++++-- 2 files changed, 12 insertions(+), 2 deletions(-) diff --git a/config.json b/config.json index bf3017f..7ee1ed2 100755 --- a/config.json +++ b/config.json @@ -5,6 +5,7 @@ "RequireAccept": false, "LockedRoleID": "the role to be given to locked users (readme)", "WelcomeChannel": "channel for welcome messages", + "GeneralChannel": "channel to @mention users who disabled their DMs", "SendWelcomeDM": true, "ModChannel": "channel for anonymous complaints", "ComplaintReceivedMessage": "Complaint received.", diff --git a/main.go b/main.go index 6cb924d..af84329 100755 --- a/main.go +++ b/main.go @@ -27,6 +27,7 @@ type Config struct { LockedRoleID string Token string WelcomeChannel string + GeneralChannel string SendWelcomeDM bool RequireAccept bool ComplaintReceivedMessage string @@ -105,10 +106,18 @@ func onJoin(s *discordgo.Session, member *discordgo.GuildMemberAdd) { if !member.User.Bot && config.SendWelcomeDM { dm, err := s.UserChannelCreate(member.User.ID) if err != nil { - // todo: @mention or something + log.Println(fmt.Sprintf("Error creating DM with %s", userToString(member.User), err)) } else { embed := getWelcomeEmbed() - s.ChannelMessageSendEmbed(dm.ID, embed) + _, err = s.ChannelMessageSendEmbed(dm.ID, embed) + if err != nil { + log.Println(fmt.Sprintf("Error sending DM to %s", userToString(member.User), err)) + } + } + if err != nil { + // if any of the preceding operations produced an error + log.Printf("Sending welcome @mention at %s", userToString(member.User)) + s.ChannelMessageSend(config.GeneralChannel, fmt.Sprintf("Wilkommen <@%s>. Bitte aktiviere vorübergehend DMs für diesen Server und sende eine Nachricht mit !welcome an mich.", member.User.ID)) } } log.Printf("User joined: %s", userToString(member.User))