-
Notifications
You must be signed in to change notification settings - Fork 1
/
group_managment.go
103 lines (86 loc) · 3.43 KB
/
group_managment.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
package main
import (
"github.com/mymmrac/telego"
tu "github.com/mymmrac/telego/telegoutil"
)
func (h *Handler) chatShared(bot *telego.Bot, message telego.Message) {
chat, err := bot.GetChat(&telego.GetChatParams{
ChatID: tu.ID(message.ChatShared.ChatID),
})
if err != nil {
bot.Logger().Errorf("Get chat: %s", err)
return
}
groupName := tu.Entity(chat.Title).Bold()
var text string
var entities []telego.MessageEntity
if chat.JoinByRequest {
text, entities = tu.MessageEntities(tu.Entity("✅ Successfully added me to "), groupName,
tu.Entity(", now I will handle all join requests sent by users"))
} else {
text, entities = tu.MessageEntities(tu.Entity("❌ Successfully added me to "), groupName,
tu.Entity(", but the group should have \""), tu.Entity("Approve new members").Bold().Italic(),
tu.Entity("\" enabled, either I will not be able to verify new users"))
}
_, err = bot.SendMessage(tu.Message(tu.ID(message.From.ID), text).WithEntities(entities...))
if err != nil {
bot.Logger().Errorf("Send chat shared msg: %s", err)
}
}
func (h *Handler) newStatusMember(bot *telego.Bot, chatMember telego.ChatMemberUpdated) {
groupName := tu.Entity(chatMember.Chat.Title).Bold()
_, err := bot.SendMessage(tu.MessageWithEntities(tu.ID(chatMember.From.ID),
tu.Entity("❌ My permissions changed in "), groupName,
tu.Entity(" and has restricted my rights to manage new comers, "+
"please make me an administrator with rights to "), tu.Entity("invite new users").Bold().Italic(),
tu.Entity(", so that I can verify them")))
if err != nil {
bot.Logger().Errorf("Send member msg: %s", err)
}
}
func (h *Handler) newStatusAdministrator(bot *telego.Bot, chatMember telego.ChatMemberUpdated) {
admin, ok := chatMember.NewChatMember.(*telego.ChatMemberAdministrator)
if !ok {
bot.Logger().Errorf("Member not administrator: %v", chatMember)
return
}
if chatMember.OldChatMember.MemberStatus() == telego.MemberStatusAdministrator {
adminOld, okOld := chatMember.OldChatMember.(*telego.ChatMemberAdministrator)
if okOld && adminOld.CanInviteUsers == admin.CanInviteUsers {
return
}
}
groupName := tu.Entity(chatMember.Chat.Title).Bold()
if !admin.CanInviteUsers {
_, err := bot.SendMessage(tu.MessageWithEntities(tu.ID(chatMember.From.ID),
tu.Entity("❌ My permissions changed in "), groupName,
tu.Entity(" and has restricted my rights to manage new comers, "+
"please give me rights to "), tu.Entity("invite new users").Bold().Italic(),
tu.Entity(", so that I can verify them")))
if err != nil {
bot.Logger().Errorf("Send member msg: %s", err)
}
return
}
chat, err := bot.GetChat(&telego.GetChatParams{
ChatID: tu.ID(chatMember.Chat.ID),
})
if err != nil {
bot.Logger().Errorf("Get chat: %s", err)
return
}
var text string
var entities []telego.MessageEntity
if chat.JoinByRequest {
text, entities = tu.MessageEntities(tu.Entity("✅ My permissions in "), groupName,
tu.Entity(" all good, now I will handle all join requests sent by users"))
} else {
text, entities = tu.MessageEntities(tu.Entity("❌ My permissions in "), groupName,
tu.Entity(" all good, but the group should have \""), tu.Entity("Approve new members").Bold().Italic(),
tu.Entity("\" enabled, either I will not be able to verify new users"))
}
_, err = bot.SendMessage(tu.Message(tu.ID(chatMember.From.ID), text).WithEntities(entities...))
if err != nil {
bot.Logger().Errorf("Send admin status msg: %s", err)
}
}