在大多数情况下,我尝试执行userinfo命令时,我将大部分字段都关闭了,但是我似乎无法获取状态字段,它说在线时处于脱机状态,而无论我尝试什么,权限都不会发送它会在终端上向我发送一条错误消息,提示未定义,而对于昵称字段,它会在嵌入中给我未定义
correct = 42500
print("Enter correct amount and win")
for i in range(6):
guess = int(input("Enter your guess :"))
if i > 4:
print("Too many guesses!")
break
if guess == correct:
print("You won")
break
elif guess < correct:
print("Too low")
else:
print("Too high!")
答案 0 :(得分:0)
此代码有些错误。首先,Message.author
返回一个User
,它没有一个nickname
。由于可以在每台服务器上修改昵称,因此您正在寻找GuildMember
。
此外,如果GuildMember.nickname
实际上没有昵称,则GuildMember
将返回undefined。有几种方法可以修复它。您可以使用GuildMember.displayName
,它将尝试显示昵称,但如果找不到用户名,则将显示用户名,或者您可以使用逻辑OR运算符||
// method 1:
.addField('Nickname', message.author.displayName, true)
// method 2:
.addField('Nickname', message.author.nickname || 'This user has no nickname', true)
谈到GuildMembers
和Users
,您正在使用一种非常复杂的方法来获取作者的GuildMember
实例在这一行:
message.guild.member(message.author);
实际上有一种更简单的使用方法:Message.member
。它与Message.author
相同,但是返回GuildMember
。另外,我不确定您为什么使用_roles
吸气剂,而不是效率更高的roles
。
message.author.permissions
也有同样的问题,因为权限是按行会修改的,并且没有一个全局值。即使这样,它仍将返回[object Object]
。即使没有,它也可能会返回一个位域表示形式,这对于一般的不和谐用户来说是无法理解的。
相反,您应该使用Permissions.toArray()
方法,该方法将根据可用位(所有成员的权限)返回位域名称的数组。可能看起来像这样:
[
CREATE_INSTANT_INVITE,
ADD_REACTIONS,
STREAM,
VIEW_CHANNEL,
SEND_MESSAGES,
EMBED_LINKS,
ATTACH_FILES,
READ_MESSAGE_HISTORY,
USE_EXTERNAL_EMOJIS,
CONNECT,
SPEAK,
USE_VAD,
CHANGE_NICKNAME,
];
您可以使用Array.prototype.join()
通过换行符或逗号和空格等将这些元素连接起来。
此外,除非您想将变量与其他字符/模板文字添加到字符串中,否则您不应该使用模板文字,或者需要将变量的数据类型强制为字符串。例如,message.author.presence.status
是 一个字符串,因此:
- `${ message.author.presence.status}`
+ message.author.presence.status
Presence.status
返回“离线”,因为you don't have the GUILD_PRESENCES
intent enabled