2 minutes to solve Captcha. Removing "Joined" message after ban
This commit is contained in:
parent
cccf47fd78
commit
4555d4fa59
|
@ -15,4 +15,5 @@ type User struct {
|
||||||
CaptchaMessage int `bson:"captcha_message"`
|
CaptchaMessage int `bson:"captcha_message"`
|
||||||
IsBanned bool `bson:"is_banned"`
|
IsBanned bool `bson:"is_banned"`
|
||||||
DateJoined int64 `bson:"date_joined"`
|
DateJoined int64 `bson:"date_joined"`
|
||||||
|
JoinedMessage int `bson:"joined_message"`
|
||||||
}
|
}
|
||||||
|
|
|
@ -24,6 +24,7 @@ func userJoined(c tb.Context) error {
|
||||||
LastName: message.Sender.LastName,
|
LastName: message.Sender.LastName,
|
||||||
IsBanned: false,
|
IsBanned: false,
|
||||||
ChatId: message.Chat.ID,
|
ChatId: message.Chat.ID,
|
||||||
|
JoinedMessage: message.ID,
|
||||||
CorrectAnswer: int8(captcha.CorrectAnswer),
|
CorrectAnswer: int8(captcha.CorrectAnswer),
|
||||||
DateJoined: time.Now().Unix(),
|
DateJoined: time.Now().Unix(),
|
||||||
}
|
}
|
||||||
|
@ -32,7 +33,7 @@ func userJoined(c tb.Context) error {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
log.Print(user)
|
log.Print(user)
|
||||||
msg := fmt.Sprintf("Приветствую тебя, %v!\nДля подтверждения, что ты человек, выбери логотип движка, которому посвящен данный чат, и отправь его номер сюда.\nЯ дам тебе минуту на это.", user.FirstName)
|
msg := fmt.Sprintf("Приветствую тебя, %v!\nДля подтверждения, что ты человек, выбери логотип движка, которому посвящен данный чат, и отправь его номер сюда.\nЯ дам тебе две минуты на это.", user.FirstName)
|
||||||
photo := tb.Photo{File: tb.FromReader(reader), Caption: msg}
|
photo := tb.Photo{File: tb.FromReader(reader), Caption: msg}
|
||||||
result, err := bot.Send(tb.ChatID(message.Chat.ID), &photo, &tb.SendOptions{ReplyTo: message})
|
result, err := bot.Send(tb.ChatID(message.Chat.ID), &photo, &tb.SendOptions{ReplyTo: message})
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
@ -54,6 +55,7 @@ func userLeft(c tb.Context) error {
|
||||||
if user, err := d.GetUser(ctx, db.User{Id: sender.ID, ChatId: message.Chat.ID}); err == nil {
|
if user, err := d.GetUser(ctx, db.User{Id: sender.ID, ChatId: message.Chat.ID}); err == nil {
|
||||||
d.RemoveUser(ctx, user)
|
d.RemoveUser(ctx, user)
|
||||||
bot.Delete(&tb.Message{Chat: message.Chat, ID: user.CaptchaMessage})
|
bot.Delete(&tb.Message{Chat: message.Chat, ID: user.CaptchaMessage})
|
||||||
|
bot.Delete(&tb.Message{Chat: message.Chat, ID: user.JoinedMessage})
|
||||||
}
|
}
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
@ -84,6 +86,7 @@ var HandlersV1 = []Handler{
|
||||||
if !solved {
|
if !solved {
|
||||||
bot.Delete(message)
|
bot.Delete(message)
|
||||||
bot.Delete(&tb.Message{Chat: message.Chat, ID: user.CaptchaMessage})
|
bot.Delete(&tb.Message{Chat: message.Chat, ID: user.CaptchaMessage})
|
||||||
|
bot.Delete(&tb.Message{Chat: message.Chat, ID: user.JoinedMessage})
|
||||||
bot.Ban(message.Chat, &tb.ChatMember{User: sender})
|
bot.Ban(message.Chat, &tb.ChatMember{User: sender})
|
||||||
_ = d.RemoveUser(ctx, user)
|
_ = d.RemoveUser(ctx, user)
|
||||||
}
|
}
|
||||||
|
|
|
@ -17,7 +17,7 @@ func TaskKickOldUsers(b tb.Bot) {
|
||||||
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
|
ctx, cancel := context.WithTimeout(context.Background(), 15*time.Second)
|
||||||
defer cancel()
|
defer cancel()
|
||||||
now := time.Now().Unix()
|
now := time.Now().Unix()
|
||||||
old := now - 60
|
old := now - 120
|
||||||
filter := bson.D{
|
filter := bson.D{
|
||||||
primitive.E{Key: "date_joined", Value: bson.D{bson.E{Key: "$lt", Value: old}}},
|
primitive.E{Key: "date_joined", Value: bson.D{bson.E{Key: "$lt", Value: old}}},
|
||||||
}
|
}
|
||||||
|
@ -30,8 +30,10 @@ func TaskKickOldUsers(b tb.Bot) {
|
||||||
tbUser := tb.User{ID: user.Id}
|
tbUser := tb.User{ID: user.Id}
|
||||||
member := tb.ChatMember{User: &tbUser}
|
member := tb.ChatMember{User: &tbUser}
|
||||||
message := tb.Message{Chat: &chat, ID: user.CaptchaMessage}
|
message := tb.Message{Chat: &chat, ID: user.CaptchaMessage}
|
||||||
|
joinMessage := tb.Message{Chat: &chat, ID: user.JoinedMessage}
|
||||||
b.Ban(&chat, &member)
|
b.Ban(&chat, &member)
|
||||||
b.Delete(&message)
|
b.Delete(&message)
|
||||||
|
b.Delete(&joinMessage)
|
||||||
d.RemoveUser(ctx, user)
|
d.RemoveUser(ctx, user)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue