gpt4 book ai didi

c# - 更改用户昵称 Discord 的命令

转载 作者:太空宇宙 更新时间:2023-11-03 12:31:02 26 4
gpt4 key购买 nike

我一直在尝试通过 C# 中的 discord bot 创建一个命令,允许人们更改另一个用户的昵称,然后向管理员发送 PM 报告用户的昵称已更改以及谁负责更改名称。除了实际的昵称更改外,一切正常。我试图用来完成此操作的代码是

    userBeingChanged.Nickname = newName;

但是它说我不能这样做,因为它是只读的。有谁知道更改用户昵称的替代方法?

编辑:我只是想更改昵称而不是用户名,并且有问题的机器人确实具有管理员权限。上面的代码无法编译,我在问是否有其他方法可以编译。

谢谢。

最佳答案

很可能必须看起来像这样。

await userBeingChanged.Edit(nickname: newName).ConfigureAwait(false);

不确定您使用的是哪个版本,但这里有一个示例。

cmd.CreateCommand("setnick")
.Description("Changes, or sets, the nickname of the specified user.")
.Parameter("user")
.Parameter("newname", ParameterType.Unparsed)
.Do(async (e) =>
{
var user = e.Channel.FindUsers(e.GetArg("user")).FirstOrDefault();
string newname = e.GetArg("newname");
await user.Edit(nickname: newname).ConfigureAwait(false);
});

我为你写了这个,但我希望你能理解它是如何工作的,如果你创建另一个具有类似功能的命令。

我们在命令中添加了两个参数,usernewnamenewname 未解析而 user 未解析的原因是因为在 user 中您可以提及用户,或将其写成纯文本。但是,user 不能包含空格,因此最好的选择是在包含空格的情况下提及用户,或者复制粘贴他当前的显示名称。 newname 未解析,因为它可以包含空格。

您不能在一个命令中有两个未解析的参数,因为无论您的消息长度如何,只有第一个参数会被赋予一个值,它将无法访问。

请记住,如果您要更改用户的昵称,用户需要在线。

我将举例说明 e.GetArg() 的工作原理。编写一个简单的命令,让机器人说出您告诉它的任何内容。

cmd.CreateCommand("say")
.Parameter("msg", ParameterType.Unparsed)
.Do(async (e) =>
{
string message = e.GetArg("msg");
await e.Channel.SendMessage(message);
});

用法:!say Hello, this works.,会让机器人说Hello, this works.。当然,参数必须是未解析的,因为消息包含空格。如果您有任何问题,请随时提出。

关于c# - 更改用户昵称 Discord 的命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42778593/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com