【问题标题】:Command permissions Discord.net命令权限 Discord.net
【发布时间】:2019-05-08 18:11:41
【问题描述】:

用户类型:“测试”, 如果用户具有角色“vip”,则显示消息“you have permission

否则“you dont have permission

我的代码:

  Public Async Function onMsg(message As SocketMessage) As Task

   If message.Source = MessageSource.Bot Then
   Else 
   If message.Content.Contains("test") Then

            Dim userName As SocketGuildUser
            Dim user = TryCast(message.Author, SocketGuildUser)
            Dim role = (TryCast(user, IGuildUser)).Guild.Roles.FirstOrDefault(Function(x) x.Name = "vip")

            If Not userName.Roles.Contains(role) Then

                Await message.Channel.SendMessageAsync("you have permission")
            Else
                Await message.Channel.SendMessageAsync("you dont have permission")
            End If


        End If

   End Function

【问题讨论】:

    标签: discord.net


    【解决方案1】:

    首先,一般来说,为了创建命令,您应该考虑使用 Discord.Net 中提供的 Command Service,而不是在收到的消息事件处理程序中检查 If/Else。

    您的代码也有错误。您声明了一个 userName 变量,但实际上从未为其分配任何内容。然而你试图做userName.Roles

    解决方案:

    If message.Source = MessageSource.Bot Then
        Return
    ElseIf message.Content.Contains("test") Then
    
        Dim user = TryCast(message.Author, SocketGuildUser)
    
        'If casting the user to a SocketGuildUser was not successful, then exit
        If user Is Nothing Then Return 'This can occur if a user message the bot via Direct Messages
    
        'Using "Any" returns true if a match is found, false otherwise
        If user.Roles.Any(Function(role) role.Name.Equals("VIP", StringComparison.OrdinalIgnoreCase)) Then
            Await message.Channel.SendMessageAsync("you have permission")
        Else
            Await message.Channel.SendMessageAsync("you dont have permission")
        End If
    End If
    

    【讨论】:

      【解决方案2】:

      一个简单的技巧,如果你的 vip 的成员可以算作不多的成员,你可以选择他们的 id 来让他们获得许可。

      If message.Content.Contains("test") Then
      If message.Author.Mention = "<@!ID>" Then  'vip's permission |OrElse statement
      Await message.Channel.SendMessageAsync("you have permission")
      Else
      Await message.Channel.SendMessageAsync("you dont have permission")
      End If
      

      【讨论】:

        猜你喜欢
        • 2019-05-13
        • 2019-06-18
        • 2021-07-07
        • 2022-01-01
        • 1970-01-01
        • 2017-03-05
        • 2019-11-23
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多