我最近发现了这个错误:当一个用户在服务器上没有昵称,而你试图用我的命令重命名他们时,它会这样命名 S!nickname <@userMention> e
=(用户名) <@userId> e
尝试做一些事情,如重命名用户两次或更换提及两次,但没有工作。。。
这是我给它重新命名的一行(应该是唯一重要的一行):
event.getMessage().getMentionedMembers().get(0).modifyNickname(event.getMessage().getContentRaw().substring(11).replace(event.getMessage().getMentionedMembers().get(0).getAsMention(), "")).queue();
哦,还有一个截图:https://gyazo.com/bdb15091497ecb7d4e3d545a4f2eb582
1条答案
按热度按时间gdx19jrr1#
你可以用
String#split
要正确分析命令:您的问题是,您希望提及字符串总是相同的。这是一个不正确的假设,因为有两种不同的格式的提及是互换使用。这个
replace
如果提到的格式不同,函数将无法正确替换内容,并且只返回相同的字符串。考虑到您知道要删除的部分始终位于字符串的开头,后跟空格,因此使用replace是有问题的。这是非常容易解析使用任何一个
split
或者indexOf
与substring
. 我还建议开始使用变量来避免像这样长200个字符的行。