dkforest

A forum and chat platform (onion)
git clone https://git.dasho.dev/n0tr1v/dkforest.git
Log | Files | Refs | LICENSE

commit 60d715d986be9c94ce30949f54f90871068160a7
parent a4010f5af75f4f9fbb4a635cacef4f9e0c6b941f
Author: n0tr1v <n0tr1v@protonmail.com>
Date:   Wed, 19 Feb 2025 21:39:50 +0000

Merge branch 'master' of Comb/dkforest into master

Diffstat:
Mpkg/web/handlers/interceptors/command/command.go | 3+++
Mpkg/web/handlers/interceptors/slashInterceptor.go | 44++++++++++++++++++++++++++++++++++++++++++++
2 files changed, 47 insertions(+), 0 deletions(-)

diff --git a/pkg/web/handlers/interceptors/command/command.go b/pkg/web/handlers/interceptors/command/command.go @@ -132,6 +132,9 @@ func (c *Command) zeroProcMsgRoomToUser(rawMsg, roomKey string, roomID database. func (c *Command) ZeroMsg(msg string) { c.zeroRawMsg(c.AuthUser, msg, msg) } +func (c *Command) ZeroMsgToUser(AuthUser *database.User, msg string) { + c.zeroRawMsg(AuthUser, msg, msg) +} func (c *Command) ZeroSysMsgTo(user2 *database.User, msg string) { c.zeroSysRawMsg(user2, msg, msg, false) diff --git a/pkg/web/handlers/interceptors/slashInterceptor.go b/pkg/web/handlers/interceptors/slashInterceptor.go @@ -21,6 +21,7 @@ import ( "html" "os" "path/filepath" + "regexp" "sort" "strconv" "strings" @@ -80,6 +81,7 @@ var userCmdsMap = map[string]CmdHandler{ "/sha256": handleSha256Cmd, "/sha512": handleSha512Cmd, "/dice": handleDiceCmd, + "/invite": handleInviteCmd, "/rand": handleRandCmd, "/choice": handleChoiceCmd, "/memes": handleListMemes, @@ -535,6 +537,48 @@ func handleDiceCmd(c *command.Command) (handled bool) { return } +func handleInviteCmd(c *command.Command) (handled bool) { + + if !c.AuthUser.IsAdmin || !c.AuthUser.IsModerator() { + return + } + + if strings.HasPrefix(c.Message, "/invite") { + text := c.Message + getUserName := regexp.MustCompile(`@\w+`) + matchUserName := getUserName.FindAllString(text, -1) + user := matchUserName[0] + RemoveAtFromUserName := strings.ReplaceAll(user, "@", "") + sendTouser, _ := c.DB.GetUserByUsername(database.Username(RemoveAtFromUserName)) + + getNumberOfInvites := regexp.MustCompile(`@\w+\s(\d+)`) + match := getNumberOfInvites.FindStringSubmatch(text) + numberOfInvites := 0 + number, err := strconv.Atoi(match[1]) + if err == nil { + numberOfInvites = number + } + if err != nil { + fmt.Println("error") + numberOfInvites = 1 + } + fmt.Println(numberOfInvites) + for i := 0; i < numberOfInvites; i++ { + inviteToken, _ := c.DB.CreateInvitation(c.AuthUser.ID) + msg := fmt.Sprintf(`your Invite token from @%s . "<span style="color: Aqua;">%s</span>"`, c.AuthUser.Username, inviteToken.Token) + msg, _ = dutils.ColorifyTaggedUsers(msg, c.DB.GetUsersByUsername) + + go func() { + time.Sleep(time.Second) + c.ZeroMsgToUser(&sendTouser, msg) + + }() + } + return true + } + return +} + func handleRandCmd(c *command.Command) (handled bool) { if strings.HasPrefix(c.Message, "/rand") { minV := 1