所以,我刚刚更新到 discord.NET 1.0.1
我正在尝试命令'serverinfo'。它应该回显服务器名称和一些其他信息。在旧版本中,它就像使用 - :
message.server.Name
所以我有点困惑。我知道服务器现在是公会。
答案 0 :(得分:1)
在新的api中,所有内容都标记为Context.
例如,我有一个命令列出了我服务器中的用户数。像这样:
[Command("users"), Summary("Gets the amount of users in the server")]
private async Task GetUsers()
{
var count = await Context.Guild.GetUsersAsync();
var users = count.Count();
await Context.Channel.SendMessageAsync($"There are currently {users} users in this server!");
}
您可以添加到此,只需在代码中键入Context.Guild.
,您就可以看到可以添加的所有内容的列表,例如Id,服务器名称等。
答案 1 :(得分:0)
我知道这是一个相当老的问题,但是我注意到它尚未得到回答。 这是使用SocketMessage查找SocketGuild的方法。
1
例如,您可以从“公会”中获取服务器名称。
62
但是要注意的一点是,如果消息来自DM,则会抛出异常。因此,您可能希望将其放入尝试中。
答案 2 :(得分:0)
在此版本的Discord.Net中,您必须使用上下文。如果要获取行会名称,则必须使用Context.Guild
。就是这样。
[Command("serverinfo")]
public async Task Serverinfo()
{
await Context.Channel.SendMessageAsync($"This Discord server's name is {Context.Guild}");
}
答案 3 :(得分:0)
SocketGuild server = ((SocketGuildChannel)msg.Channel).Guild;
msg.Channel.SendMessageAsync($"This server is called {server.Name}, it has {server.Membercount} members and is owned by {server.Owner}")
还有更多的功能,只需稍微尝试一下IntelliSense,您就可以使用所有功能。
答案 4 :(得分:0)
// edit在C#中而不是vb.net中 这样
[Command("guildinfo")]
[RequireUserPermission(GuildPermission.Administrator)]
public async Task guildinfoAsync()
{
var embed = new EmbedBuilder();
embed.WithDescription("Total member : " + Context.Guild.MemberCount + Environment.NewLine + "Guild name : " + Context.Guild.Name + Environment.NewLine + "Guild id : " + Context.Guild.Id + Environment.NewLine + "Owner id : " + Context.Guild.OwnerId + Environment.NewLine + "Owner name : " + Context.Guild.Owner.Username + "#" + Context.Guild.Owner.Discriminator + Environment.NewLine + "total textchannel : " + Context.Guild.TextChannels.Count + Environment.NewLine + "total vocal channel : " + Context.Guild.VoiceChannels.Count);
await Context.Channel.SendMessageAsync("", false, embed);
}
答案 5 :(得分:0)
有很多东西。您可以使用 IntelliSense 找到很多东西。像服务器等等。 您可以使用 Context.Guild 访问它们。或者做一个变量:
SocketGuild server = ((SocketGuildChannel)msg.Channel).Guild;