91 lines
1.8 KiB
Go
91 lines
1.8 KiB
Go
package moon
|
|
|
|
import (
|
|
"fmt"
|
|
"strings"
|
|
"time"
|
|
|
|
"github.com/NicoNex/echotron/v3"
|
|
)
|
|
|
|
// Greet makes greet for user and saves greet event to greet db.
|
|
func Greet(users *[]echotron.User, chat *echotron.Chat) {
|
|
var (
|
|
message = GreetMessages[Random.Intn(len(GreetMessages))]
|
|
usernames string
|
|
)
|
|
|
|
for _, u := range *users {
|
|
switch {
|
|
case strings.TrimSpace(u.FirstName) != "" && strings.TrimSpace(u.LastName) != "":
|
|
usernames += fmt.Sprintf(
|
|
"[%s %s](tg://user?id=%d), ",
|
|
u.FirstName,
|
|
u.LastName,
|
|
u.ID,
|
|
)
|
|
|
|
case strings.TrimSpace(u.FirstName) != "":
|
|
usernames += fmt.Sprintf(
|
|
"[%s](tg://user?id=%d), ",
|
|
u.FirstName,
|
|
u.ID,
|
|
)
|
|
|
|
case strings.TrimSpace(u.LastName) != "":
|
|
usernames += fmt.Sprintf(
|
|
"[%s](tg://user?id=%d), ",
|
|
u.LastName,
|
|
u.ID,
|
|
)
|
|
|
|
case strings.TrimSpace(u.Username) != "":
|
|
usernames += fmt.Sprintf(
|
|
"[%s](tg://user?id=%d), ",
|
|
u.Username,
|
|
u.ID,
|
|
)
|
|
|
|
default:
|
|
usernames += fmt.Sprintf(
|
|
"[%d](tg://user?id=%d), ",
|
|
u.ID,
|
|
u.ID,
|
|
)
|
|
}
|
|
}
|
|
|
|
usernames = strings.TrimSpace(usernames)
|
|
usernames = strings.TrimRight(usernames, ",")
|
|
|
|
message += fmt.Sprintf(
|
|
" %s. Представьтес, пожалуйста, и расскажите, что вас сюда привело.",
|
|
usernames,
|
|
)
|
|
|
|
Tg.SendMessage(message, chat.ID, &echotron.MessageOptions{ParseMode: "MarkdownV2"})
|
|
|
|
timestamp := time.Now().Unix()
|
|
|
|
for _, u := range *users {
|
|
Log.Infof(
|
|
"Saving %s %s (username = %s, id = %d) from chat %s %s (%d) to GreetMembers DB",
|
|
u.FirstName,
|
|
u.LastName,
|
|
u.Username,
|
|
u.ID,
|
|
chat.Type,
|
|
chat.Title,
|
|
chat.ID,
|
|
)
|
|
|
|
GreetChatMembers.Set(
|
|
fmt.Sprintf("%d+%d", chat.ID, u.ID),
|
|
timestamp,
|
|
60*time.Minute,
|
|
)
|
|
}
|
|
}
|
|
|
|
/* vim: set ft=go noet ai ts=4 sw=4 sts=4: */
|