如何在不说前缀的情况下从昵称中删除 AFK
how to remove a AFK from the nickname without say the prefix
所以我做了一个简单的 AFK 命令
像这样
client.on('message', message => {
if (message.content.includes('!afk')) {
message.member.setNickname(`[AFK] ${message.member.displayName} `).catch(error => console.log(error));
}
if (message.content === '!back') {
message.member.setNickname(message.member.displayName.replace('[AFK] ', )).catch(error => console.log(error));
}
});
我想要如果用户挂机然后用户聊天像“嗨”[AFK] 就没有说前缀“!back”
我该怎么做?
谢谢你帮助我 (:
如果我没理解错的话,你是要求在玩家再次输入内容时删除挂机状态。
我使用 JS Set 做了一个粗略的解决方案,它应该适用于一小部分用户,但它可能需要对大型服务器进行额外的调整。
基本上,当玩家键入 !afk
时,它会包含在 AFK 玩家集合中,而当 he/she/it 返回并键入内容时,其名称将从集合中删除并更新其昵称。
我不确定 message.member.id
是否存在,它是否是跟踪玩家的正确字段(编辑:Yes, it is ), 但主要思想是记录每个 afk 玩家的独特之处。
const afkPlayers = new Set();
client.on('message', message => {
if (message.content.includes('!afk')) {
afkPlayers.add(message.member.id);
message.member.setNickname(`[AFK] ${message.member.displayName} `).catch(error => console.log(error));
}
if(afkPlayers.member.has(message.member.id)){
afkPlayers.member.delete(message.member.id);
message.member.setNickname(message.member.displayName.replace('[AFK] ', )).catch(error => console.log(error));
}
});
我真的不知道 Discord 是如何工作的,也不知道什么时候触发“消息”事件,但在我看来,即使没有 set
,你也可以做到这一点,正如 @TheCave3 所提议的:
client.on('message', message => {
const pref='[AFK] ';
if (message.content.includes('!afk'))
message.member.setNickname(pref+message.member.displayName).catch(error => console.log(error));
else if (message.member.displayName.slice(0,pref.length)===pref)
message.member.setNickname(message.member.displayName.slice(pref.length)).catch(error => console.log(error));
});
所以我做了一个简单的 AFK 命令 像这样
client.on('message', message => {
if (message.content.includes('!afk')) {
message.member.setNickname(`[AFK] ${message.member.displayName} `).catch(error => console.log(error));
}
if (message.content === '!back') {
message.member.setNickname(message.member.displayName.replace('[AFK] ', )).catch(error => console.log(error));
}
});
我想要如果用户挂机然后用户聊天像“嗨”[AFK] 就没有说前缀“!back”
我该怎么做?
谢谢你帮助我 (:
如果我没理解错的话,你是要求在玩家再次输入内容时删除挂机状态。 我使用 JS Set 做了一个粗略的解决方案,它应该适用于一小部分用户,但它可能需要对大型服务器进行额外的调整。
基本上,当玩家键入 !afk
时,它会包含在 AFK 玩家集合中,而当 he/she/it 返回并键入内容时,其名称将从集合中删除并更新其昵称。
我不确定 (编辑:Yes, it is ), 但主要思想是记录每个 afk 玩家的独特之处。message.member.id
是否存在,它是否是跟踪玩家的正确字段
const afkPlayers = new Set();
client.on('message', message => {
if (message.content.includes('!afk')) {
afkPlayers.add(message.member.id);
message.member.setNickname(`[AFK] ${message.member.displayName} `).catch(error => console.log(error));
}
if(afkPlayers.member.has(message.member.id)){
afkPlayers.member.delete(message.member.id);
message.member.setNickname(message.member.displayName.replace('[AFK] ', )).catch(error => console.log(error));
}
});
我真的不知道 Discord 是如何工作的,也不知道什么时候触发“消息”事件,但在我看来,即使没有 set
,你也可以做到这一点,正如 @TheCave3 所提议的:
client.on('message', message => {
const pref='[AFK] ';
if (message.content.includes('!afk'))
message.member.setNickname(pref+message.member.displayName).catch(error => console.log(error));
else if (message.member.displayName.slice(0,pref.length)===pref)
message.member.setNickname(message.member.displayName.slice(pref.length)).catch(error => console.log(error));
});