通过Discord.Net

时间:2019-01-04 18:53:21

标签: c# discord discord.net

我想我在这里问Stackoverflow。我的问题是我已经尝试过多次接收特定服务器/频道的用户协会。

我的第一个尝试是创建一个类:

using Discord.Commands;
using Discord.WebSocket;
using System.Threading.Tasks;
using System.Collections.Generic;

namespace DiscordBot
{
   class AllUsersGetter : ModuleBase<SocketCommandContext>
   {
      public IReadOnlyCollection<SocketGuildUser> Users;

      public async Task Traitement()
      {
         Users = Context.Guild.Users;
      }
   }
}

但这对我来说是一个更愚蠢的想法。我后来做到了:

AllUsersGetter allUsersGetter = new AllUsersGetter();
allUsersGetter.Traitement();
var u = allUsersGetter.Users;

但是然后我得到一个例外,我需要一个对象引用,但没有给出。

private IList<SocketGuildUser> guidData;

public async void MainAsync() {
   string token = "";
   client = new DiscordSocketClient(new DiscordSocketConfig() {
      LogLevel = LogSeverity.Verbose
   });

   DiscordRestClient = new DiscordRestClient(new DiscordRestConfig() {
      LogLevel = LogSeverity.Verbose
   });

   client.Log += Log;

   try {
      await client.LoginAsync(TokenType.Bot, token);
      client.MessageReceived += MessageReceived;
      client.Connected += Client_Connected;
      await client.StartAsync();
   } catch (Exception exc) {
      StatusLabel.Text = exc.Message;
   }
   await Task.Delay(-1);
}

结论:我一无所知...

我只想获取位于特定服务器/通道内的所有用户的数组。

1 个答案:

答案 0 :(得分:1)

您可以使用IGuild#GetUsersAsync / SocketGuild#Users方法/属性来获取行会/渠道中的所有用户。

official Discord.Net documentation上查看有关这些成员的更多信息。

此外,客户端在连接后还没有准备好。请考虑按照Ready文章中所述钩住Managing Connections事件。