我想我在这里问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);
}
结论:我一无所知...
我只想获取位于特定服务器/通道内的所有用户的数组。
答案 0 :(得分:1)
您可以使用IGuild#GetUsersAsync
/ SocketGuild#Users
方法/属性来获取行会/渠道中的所有用户。
在official Discord.Net documentation上查看有关这些成员的更多信息。
此外,客户端在连接后还没有准备好。请考虑按照Ready文章中所述钩住Managing Connections事件。