diff --git a/telegram.go b/telegram.go index 600ea4ac9c2e04f29d1ed609f4af3a0b9df18e9a..b55cbf35897348c11c941931b0e64bb7f5ba72dd 100644 --- a/telegram.go +++ b/telegram.go @@ -147,12 +147,76 @@ func respondTelegram(update tgbotapi.Update) { } var ( - username = "unknown" - id = -1 dMessageID = "-1" dGuildID = "-1" dChannelID = "-1" ) + + if newP := update.Message.NewChatMembers; newP != nil { + newV := *newP + if len(newV) <= 0 { + return + } + + content := newV[0].FirstName + for i := 1; i < len(newV); i++ { + content += newV[i].FirstName + log.Printf("T%vM%v -> D%vM%s @%s (%v) [join]", + tc.ID, update.Message.MessageID, dc.ID, dMessageID, newV[i].UserName, newV[i].ID) + } + + if message, err := session.ChannelMessageSend(strconv.Itoa(dc.ID), fmt.Sprintf("%s joined the Telegram chat.", content)); err != nil { + msg := tgbotapi.NewMessage(update.Message.Chat.ID, "error relaying message") + msg.ReplyToMessageID = update.Message.MessageID + log.Printf("error relaying message %v: %s", update.Message.MessageID, err.Error()) + _, _ = botAPI.Send(msg) + return + } else { + dMessageID = message.ID + dChannelID = message.ChannelID + dGuildID = message.GuildID + } + + messageReference[update.Message.MessageID] = &discordgo.MessageReference{ + MessageID: dMessageID, + ChannelID: dChannelID, + GuildID: dGuildID, + } + referenceMessage[dMessageID] = update.Message.MessageID + hasHeader[update.Message.MessageID] = false + return + } + + if left := update.Message.LeftChatMember; left != nil { + if message, err := session.ChannelMessageSend(strconv.Itoa(dc.ID), fmt.Sprintf("%s left the Telegram chat.", left.FirstName)); err != nil { + msg := tgbotapi.NewMessage(update.Message.Chat.ID, "error relaying message") + msg.ReplyToMessageID = update.Message.MessageID + log.Printf("error relaying message %v: %s", update.Message.MessageID, err.Error()) + _, _ = botAPI.Send(msg) + return + } else { + dMessageID = message.ID + dChannelID = message.ChannelID + dGuildID = message.GuildID + } + + messageReference[update.Message.MessageID] = &discordgo.MessageReference{ + MessageID: dMessageID, + ChannelID: dChannelID, + GuildID: dGuildID, + } + referenceMessage[dMessageID] = update.Message.MessageID + hasHeader[update.Message.MessageID] = false + + log.Printf("T%vM%v -> D%vM%s @%s (%v) [leave]", + tc.ID, update.Message.MessageID, dc.ID, dMessageID, left.UserName, left.ID) + return + } + + var ( + username = "unknown" + id = -1 + ) if update.Message.From != nil { username = update.Message.From.UserName id = update.Message.From.ID @@ -215,6 +279,7 @@ func respondTelegram(update tgbotapi.Update) { msg.ReplyToMessageID = update.Message.MessageID log.Printf("error relaying message %v: %s", update.Message.MessageID, err.Error()) _, _ = botAPI.Send(msg) + return } else { dMessageID = message.ID dChannelID = message.ChannelID