我如何使用ModifyAsync用机器人修改角色的十六进制颜色?

时间:2019-07-17 00:48:32

标签: c# discord.net

我正在使用Visual Studio和Discord.Net v2.1.1。

我已经搜索了所有内容,但是没有发现任何可以显示修改角色颜色(或IRole)的方法。

还有其他方法吗?我在做什么错了?

Context.Guild.GetRole(roleid).ModifyAsync(???);

编辑:这对我有用:await Context.Guild.GetRole(roleid).ModifyAsync(x => x.Color = new Color(1, 4, 150));

1 个答案:

答案 0 :(得分:2)

简短回答

在Discord.Net中,大多数ModifyAsync(如果不是全部)都将Action<T>作为其参数,并且其文档及其用法在相应的XProperties文档中。在这种情况下,RoleProperties

enter image description here

长答案

由于这些方法都采用Action<T>,因此我们可以看看Action上的Microsoft .NET API Documentation是什么。从文档中,我们了解到它是一个委托,而最简单的委托方式是使用lambda expression(另请参见Func vs. Action vs. Predicate)。

由此,我们可以得出以下结论,

var role = guild.GetRole(id);
await role.ModifyAsync(role =>
{
    // Assign the color to a new Discord.Color struct of color [123, 123, 123]
    role.Color = new Color(123, 123, 123);
});

所有ModifyAsync的工作大致相同。