我一直试图通过C#中的discord bot创建一个命令,允许人们更改另一个用户的昵称,然后将PM发送给管理员,报告用户的昵称已更改,谁负责更改名称 . 除了实际的昵称改变之外,一切正常 . 我试图用来完成这个的代码是
userBeingChanged.Nickname = newName;
但它说我不能这样做,因为它是只读的 . 有没有人知道改变用户昵称的另一种方法?
编辑:我只是试图更改昵称而不是用户名,并且有问题的机器人确实具有管理员权限 . 上面的代码没有编译,我问是否有另一种方法可以做到这一点 .
谢谢 .
2 回答
机器人应该需要“管理昵称”权限或“管理员”权限才能更改服务器上某人的昵称 .
请记住,这只允许您更改服务器上人员的昵称,而不是他们的全局不和名 .
问题可能源于那里,因为机器人试图做一些不允许做的事情 .
很可能看起来像这样 .
不确定您使用的是哪个版本,但这是一个示例 .
我为你写了这个,但我希望你能理解它是如何工作的,如果你用另一个具有类似功能的命令 .
我们在命令
user
和newname
中添加了两个参数 . 原因newname
未解析,而user
不是,因为在user
中你可以提及用户,或者用纯文本写 . 但是,user
不能包含空格,因此最好的选择是提及用户是否包含空格,或者复制粘贴其当前显示名称 .newname
未解析,因为它可以包含空格 .您不能在一个命令中拥有两个未解析的参数,因为只有第一个参数将被赋予一个值,无论您的消息长度如何,它都将无法访问 .
Remember, the user needs to be online if you are to change his nickname.
我将举例说明
e.GetArg()
的工作原理 . 写一个简单的命令让机器人说出你告诉它的任何东西 .用法:
!say Hello, this works.
,会让机器人说你好,这个工作..当然,参数必须被解析,因为消息包含空格 . 如果您有任何问题随时问 .