discord.net 服务器响应错误 50001:缺少访问权限

discord.net The server responded with error 50001: Missing Access

我想检索 discord guild 中的用户,但我收到一条带有神秘消息的错误。

The server responded with error 50001: Missing Access

机器人有 Administrator 权限,这就是它在 Server settings > Roles > Permissions

中的说明

也许需要在配置中勾选其他内容。

你的想法?

感谢您的帮助。

代码

  class Program
    {
        private static IDiscordClient _client;
        private static bool _isRunning = false;
        private static Timer _timer;

        static async Task Main(string[] args)
        {
            AppDomain.CurrentDomain.ProcessExit += new EventHandler(ProcessExit);
            var client = new DiscordSocketClient(new DiscordSocketConfig()
            {
                AlwaysDownloadUsers = true,
                MessageCacheSize = 200,
            });
            var botToken = "...";

            await client.LoginAsync(TokenType.Bot, botToken);
            await client.StartAsync();
            client.Ready += Ready;
            _client = client;
            await Task.Delay(Timeout.InfiniteTimeSpan);
        }

        private static async Task Ready()
        {
            _timer = new Timer(GetUsers, null, TimeSpan.Zero, TimeSpan.FromSeconds(10));
        }

        private static async void GetUsers(object state)
        {
            if (_isRunning)
            {
                return;
            }

            _isRunning = true;

            try
            {
                var guilds = await _client.GetGuildsAsync();
                var guild = guilds.First();

                var users = await guild.GetUsersAsync();
                Console.WriteLine(users.Count);
            }
            catch (Exception ex)
            {
                Console.WriteLine(ex.Message);
            }

            _isRunning = false;

        }

        static void ProcessExit(object sender, EventArgs e)
        {
            (_client as DiscordSocketClient).LogoutAsync().GetAwaiter().GetResult();
        }
    }

Discord 开发者门户 - OAuth2 配置下的范围和机器人权限

Link 我曾经邀请机器人加入服务器。

https://discord.com/oauth2/authorize?client_id=<>&permissions=8&scope=applications.commands%20bot

显然必须切换服务器成员意图才能看到公会成员。

很高兴 OP 已经解决了他们的问题;我来自搜索并通过确保我的机器人邀请 link 最后有 &scope=bot%20applications.commands 以及“使用斜杠命令”权限(或者让你的机器人成为管理员)来解决它。

机器人的邀请 link 在 OAuth > URL Discord 开发者门户中的生成器中 -- https://discord.com/developers/applications/<your_app_id>/oauth2/url-generator

另外,确保 Bot 菜单中的 REQUIRES OAUTH2 CODE GRANT 选项已关闭,否则您会从 OAuth 邀请中收到“Bot 需要代码授权”的响应。