首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >命令权限Discord.net

命令权限Discord.net
EN

Stack Overflow用户
提问于 2019-05-08 06:51:48
回答 2查看 1.1K关注 0票数 0

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

其他"you dont have permission

我的代码:

代码语言:javascript
复制
  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
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-05-08 10:11:41

首先,对于一般的创建命令,您应该考虑使用Discord.Net中提供的Discord.Net,而不是在您的消息接收事件处理程序中检查是否/Else。

您的代码中也有一个错误。您声明了一个userName变量,但实际上从来没有给它赋值任何东西。然而你却试图做userName.Roles

解决方案:

代码语言:javascript
复制
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
票数 0
EN

Stack Overflow用户

发布于 2019-05-08 07:50:59

一个简单的技巧,如果您的vip成员可以计数为不多的成员,您可以选择他们的身份证,让他们的许可。

代码语言:javascript
复制
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
票数 -1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56035065

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档