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
|
package rolereact
import (
"context"
"git.anhgelus.world/anhgelus/les-copaings-bot/common"
"git.anhgelus.world/anhgelus/les-copaings-bot/config"
"github.com/nyttikord/gokord/bot"
"github.com/nyttikord/gokord/event"
"github.com/nyttikord/gokord/guild"
)
type RoleReact struct {
RoleID string
}
func HandleReactionAdd(ctx context.Context, dg bot.Session, e *event.MessageReactionAdd) {
results := []RoleReact{}
common.GetDB(ctx).Model(&config.RoleReact{}).
Joins("JOIN role_react_messages ON role_reacts.role_react_message_id = role_react_messages.id").
Where("role_react_messages.message_id = ? AND role_reacts.reaction = ?", e.MessageID, e.MessageReaction.Emoji.APIName()).
Scan(&results)
for _, role := range results {
err := guild.AddMemberRole(e.GuildID, e.UserID, role.RoleID).Do(ctx)
if err != nil {
bot.Logger(ctx).Error("Unable to add role after member added reaction", "error", err)
}
}
}
func HandleReactionRemove(ctx context.Context, dg bot.Session, e *event.MessageReactionRemove) {
results := []RoleReact{}
common.GetDB(ctx).Model(&config.RoleReact{}).
Joins("JOIN role_react_messages ON role_reacts.role_react_message_id = role_react_messages.id").
Where("role_react_messages.message_id = ? AND role_reacts.reaction = ?", e.MessageID, e.MessageReaction.Emoji.APIName()).
Scan(&results)
for _, role := range results {
err := guild.RemoveMemberRole(e.GuildID, e.UserID, role.RoleID).Do(ctx)
if err != nil {
bot.Logger(ctx).Error("Unable to remove role after member removed reaction", "error", err)
}
}
}
|