commit f8e70a2dff63fd5a84aa6b0ccae007f31f672f3b
parent 60d715d986be9c94ce30949f54f90871068160a7
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Wed, 19 Feb 2025 14:09:25 -0800
cleanup
Diffstat:
3 files changed, 24 insertions(+), 37 deletions(-)
diff --git a/pkg/web/handlers/interceptors/command/command.go b/pkg/web/handlers/interceptors/command/command.go
@@ -132,8 +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) ZeroMsgToUser(toUser *database.User, msg string) {
+ c.zeroRawMsg(toUser, msg, msg)
}
func (c *Command) ZeroSysMsgTo(user2 *database.User, msg string) {
diff --git a/pkg/web/handlers/interceptors/msgInterceptor.go b/pkg/web/handlers/interceptors/msgInterceptor.go
@@ -52,6 +52,7 @@ var forceCaptchaRgx = regexp.MustCompile(`^/(?:captcha) ` + optAtGUser)
var unkickRgx = regexp.MustCompile(`^/(?:unkick|uk) ` + optAtGUser)
var hellbanRgx = regexp.MustCompile(`^/(?:hellban|hb) ` + optAtGUser)
var unhellbanRgx = regexp.MustCompile(`^/(?:unhellban|uhb) ` + optAtGUser)
+var inviteRgx = regexp.MustCompile(`^/invite ` + optAtGUser + ` (\d+)$`)
var randRgx = regexp.MustCompile(`^/rand (-?\d+) (-?\d+)$`)
var tokenRgx = regexp.MustCompile(`^/token (\d{1,2})$`)
var snippetRgx = regexp.MustCompile(`!\w{1,20}`)
diff --git a/pkg/web/handlers/interceptors/slashInterceptor.go b/pkg/web/handlers/interceptors/slashInterceptor.go
@@ -21,7 +21,6 @@ import (
"html"
"os"
"path/filepath"
- "regexp"
"sort"
"strconv"
"strings"
@@ -81,7 +80,6 @@ var userCmdsMap = map[string]CmdHandler{
"/sha256": handleSha256Cmd,
"/sha512": handleSha512Cmd,
"/dice": handleDiceCmd,
- "/invite": handleInviteCmd,
"/rand": handleRandCmd,
"/choice": handleChoiceCmd,
"/memes": handleListMemes,
@@ -147,6 +145,7 @@ var moderatorCmdsMap = map[string]CmdHandler{
"/hellban": handleHellbanCmd,
"/unhellban": handleUnhellbanCmd,
"/uhb": handleUnhellbanCmd,
+ "/invite": handleInviteCmd,
}
var adminCmdsMap = map[string]CmdHandler{
@@ -538,42 +537,28 @@ func handleDiceCmd(c *command.Command) (handled bool) {
}
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 m := inviteRgx.FindStringSubmatch(c.Message); len(m) == 3 {
+ username := database.Username(m[1])
+ nbInvites := utils.Clamp(utils.DoParseInt(m[2]), 1, 10)
+ sendToUser, err := c.DB.GetUserByUsername(username)
if err != nil {
- fmt.Println("error")
- numberOfInvites = 1
+ c.Err = ErrUsernameNotFound
+ return true
}
- 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)
-
- }()
+ tokens := make([]string, 0)
+ for i := 0; i < nbInvites; i++ {
+ if inviteToken, err := c.DB.CreateInvitation(c.AuthUser.ID); err == nil {
+ tokens = append(tokens, fmt.Sprintf(`<span style="color: Aqua; user-select: all; -webkit-user-select: all;">%s</span>`, inviteToken.Token))
+ }
}
+ go func() {
+ time.Sleep(time.Second)
+ tokensStr := strings.Join(tokens, "<br />")
+ msg := fmt.Sprintf(`invitation tokens from @%s:<br />%s`, c.AuthUser.Username, tokensStr)
+ msg, _ = dutils.ColorifyTaggedUsers(msg, c.DB.GetUsersByUsername)
+ c.ZeroMsgToUser(&sendToUser, msg)
+ }()
+ c.Err = command.NewErrSuccess(fmt.Sprintf("%d tokens sent", len(tokens)))
return true
}
return