我正在尝试用C#编写一些东西,这是一个简单的控制台应用程序,它将连接到Discord,检索频道中所有用户的列表(目前所有用户都已足够,但拥有频道访问权限的每个人都会更好。 )应用程序不需要维护连接,只需跳入,抓取用户名列表并跳出。
我已经尝试过DiscordSharp,但它似乎并没有完全成功。我想我正在获得客户端连接,但我似乎无法通过GetChannelByName或GetChannelByID找到任何渠道。我没有开始使用DiscordSharp作为唯一的解决方案,尽管到目前为止我确实喜欢这个库。
答案 0 :(得分:1)
A"服务器"在不和谐中被称为Guild。根据文档,Guild
可以包含Channel个对象的列表。在Channel
对象中有一个名为recipients
的属性,该属性应该为您提供该频道的所有用户。
我不推荐使用DiscordSharp,因为according to their GitHub它是一个死的项目。他们建议您使用DSharpPlus或Discord.NET。
我刚检查了the documentation的Discord.NET,发现了一些可以使用的方法:
GetGuildAsync(UInt64, RequestOptions)
:这将根据服务器ID为您提供RestGuild(服务器)。
GetChannelAsync(UInt64, RequestOptions)
:这会根据频道ID为您提供RestChannel。
使用其中任何一个最终都会获得一个RestChannel
对象,其中包含GetUsersAsync(CacheMode, RequestOptions)
方法,可让您获取IUSer
答案 1 :(得分:0)
在命令模块中,您可以执行以下操作:
public class AllUsers : ModuleBase<SocketCommandContext>
{
public async Task Traitement()
{
var users = Context.Guild.Users;
//you can loop here on users and do the traitement
}
}