commit cf4f10a3124b565aa011af811f1e21f99719c827
parent a759293f55aa611db926bfbe95b01fee0affccb7
Author: n0tr1v <n0tr1v@protonmail.com>
Date: Fri, 2 Dec 2022 23:20:33 -0500
Add /system command for admin
Diffstat:
5 files changed, 26 insertions(+), 4 deletions(-)
diff --git a/pkg/database/tableChatMessages.go b/pkg/database/tableChatMessages.go
@@ -457,7 +457,7 @@ func CreateOrEditMessage(
toUserID *UserID,
upload *Upload,
groupID *int64,
- hellbanMsg, modMsg bool) (int64, error) {
+ hellbanMsg, modMsg, systemMsg bool) (int64, error) {
if roomKey != "" {
var err error
@@ -476,6 +476,7 @@ func CreateOrEditMessage(
msg := makeMsg(raw, message, roomID, fromUserID)
editMsg = &msg
editMsg.IsHellbanned = hellbanMsg
+ editMsg.System = systemMsg
editMsg.Moderators = modMsg
editMsg.GroupID = groupID
editMsg.ToUserID = toUserID
diff --git a/pkg/web/handlers/api/v1/msgInterceptor.go b/pkg/web/handlers/api/v1/msgInterceptor.go
@@ -26,7 +26,7 @@ func (i MsgInterceptor) InterceptMsg(cmd *Command) {
toUserID := database.UserPtrID(cmd.toUser)
- msgID, _ := database.CreateOrEditMessage(cmd.editMsg, html, cmd.origMessage, cmd.roomKey, cmd.room.ID, cmd.fromUserID, toUserID, cmd.upload, cmd.groupID, cmd.hellbanMsg, cmd.modMsg)
+ msgID, _ := database.CreateOrEditMessage(cmd.editMsg, html, cmd.origMessage, cmd.roomKey, cmd.room.ID, cmd.fromUserID, toUserID, cmd.upload, cmd.groupID, cmd.hellbanMsg, cmd.modMsg, cmd.systemMsg)
if !cmd.skipInboxes {
sendInboxes(cmd.room, cmd.authUser, cmd.toUser, msgID, cmd.groupID, html, cmd.modMsg, taggedUsersIDsMap)
diff --git a/pkg/web/handlers/api/v1/slashInterceptor.go b/pkg/web/handlers/api/v1/slashInterceptor.go
@@ -37,7 +37,8 @@ func (i SlashInterceptor) InterceptMsg(c *Command) {
handled := handleUserCmd(c) ||
handlePrivateRoomCmd(c) ||
handlePrivateRoomOwnerCmd(c) ||
- handleModeratorCmd(c)
+ handleModeratorCmd(c) ||
+ handleAdminCmd(c)
if !handled {
c.err = errors.New("invalid slash command")
}
@@ -114,6 +115,13 @@ func handleModeratorCmd(c *Command) (handled bool) {
return false
}
+func handleAdminCmd(c *Command) (handled bool) {
+ if c.authUser.IsAdmin {
+ return handleSystemCmd(c)
+ }
+ return false
+}
+
func handleModeratorGroupCmd(c *Command) (handled bool) {
if strings.HasPrefix(c.message, "/m ") || strings.HasPrefix(c.message, "/n ") {
if strings.HasPrefix(c.message, "/n ") {
@@ -1287,3 +1295,15 @@ func handleErrorCmd(c *Command) (handled bool) {
}
return
}
+
+func handleSystemCmd(c *Command) (handled bool) {
+ if strings.HasPrefix(c.message, "/system ") || strings.HasPrefix(c.message, "/sys ") {
+ if strings.HasPrefix(c.message, "/sys ") {
+ c.message = strings.Replace(c.message, "/sys ", "/system ", 1)
+ }
+ c.message = strings.TrimPrefix(c.message, "/system ")
+ c.systemMsg = true
+ return true
+ }
+ return false
+}
diff --git a/pkg/web/handlers/api/v1/topBarHandler.go b/pkg/web/handlers/api/v1/topBarHandler.go
@@ -454,6 +454,7 @@ type Command struct {
editMsg *database.ChatMessage // If we're editing a message
groupID *int64 // If the message is for a subgroup
hellbanMsg bool // Is the message will be marked HB
+ systemMsg bool // Is the message system
modMsg bool // Is the message part of the "moderators" group
c echo.Context
zeroUser *database.User // Cache the zero (@0) user
diff --git a/pkg/web/handlers/api/v1/werewolf.go b/pkg/web/handlers/api/v1/werewolf.go
@@ -334,7 +334,7 @@ func (b *Werewolf) Narrate(msg string, toUserID *database.UserID, groupID *int64
}
func (b *Werewolf) NarrateRaw(msg string, toUserID *database.UserID, groupID *int64) {
- _, _ = database.CreateOrEditMessage(nil, msg, msg, "", b.roomID, b.narratorID, toUserID, nil, groupID, false, false)
+ _, _ = database.CreateOrEditMessage(nil, msg, msg, "", b.roomID, b.narratorID, toUserID, nil, groupID, false, false, false)
}
// Display roles assigned at beginning of the Game