浏览代码

fix(cmd): disable message input if user does not have relevant permission

ayn2op 9 月之前
父节点
当前提交
a80c5bff2a
共有 2 个文件被更改,包括 5 次插入16 次删除
  1. 3 10
      cmd/guilds_tree.go
  2. 2 6
      cmd/messages_list.go

+ 3 - 10
cmd/guilds_tree.go

@@ -123,16 +123,8 @@ func (gt *guildsTree) channelToString(channel discord.Channel) string {
 }
 
 func (gt *guildsTree) createChannelNode(node *tview.TreeNode, channel discord.Channel) {
-	if channel.Type != discord.DirectMessage && channel.Type != discord.GroupDM {
-		perms, err := discordState.Permissions(channel.ID, discordState.Ready().User.ID)
-		if err != nil {
-			slog.Error("failed to get permissions", "err", err, "channel_id", channel.ID)
-			return
-		}
-
-		if !perms.Has(discord.PermissionViewChannel) {
-			return
-		}
+	if channel.Type != discord.DirectMessage && channel.Type != discord.GroupDM && !discordState.HasPermissions(channel.ID, discord.PermissionViewChannel) {
+		return
 	}
 
 	channelNode := tview.NewTreeNode(gt.channelToString(channel)).
@@ -226,6 +218,7 @@ func (gt *guildsTree) onSelected(node *tview.TreeNode) {
 		app.messagesList.
 			ScrollToEnd().
 			SetTitle(gt.channelToString(*channel))
+		app.messageInput.SetDisabled(!discordState.HasPermissions(channel.ID, discord.PermissionSendMessages))
 
 		gt.selectedChannelID = channel.ID
 		gt.selectedGuildID = channel.GuildID

+ 2 - 6
cmd/messages_list.go

@@ -513,12 +513,8 @@ func (ml *messagesList) delete() {
 
 	clientID := discordState.Ready().User.ID
 	if msg.GuildID.IsValid() {
-		perms, err := discordState.Permissions(app.guildsTree.selectedChannelID, clientID)
-		if err != nil {
-			return
-		}
-
-		if msg.Author.ID != clientID && !perms.Has(discord.PermissionManageMessages) {
+		if msg.Author.ID != clientID && !discordState.HasPermissions(msg.ChannelID, discord.PermissionManageMessages) {
+			slog.Error("failed to delete message; missing relevant permissions", "channel_id", msg.ChannelID, "message_id", msg.ID)
 			return
 		}
 	}