获取服务器信息Discord.NET 1.0

时间:2017-08-07 17:37:19

标签: vb.net discord.net

所以,我刚刚更新到 discord.NET 1.0.1
我正在尝试命令'serverinfo'。它应该回显服务器名称和一些其他信息。在旧版本中,它就像使用 - :

一样简单
message.server.Name

所以我有点困惑。我知道服务器现在是公会。

6 个答案:

答案 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);
        }

结果:enter image description here

答案 5 :(得分:0)

有很多东西。您可以使用 IntelliSense 找到很多东西。像服务器等等。 您可以使用 Context.Guild 访问它们。或者做一个变量:

SocketGuild server = ((SocketGuildChannel)msg.Channel).Guild;