[英]How to mention a user in a message with discord.js?
我正在執行使用戶靜音的命令。 例如,以下命令將使用戶@anon
靜音 5 秒:
!mute @anon 5
我的程序偵聽message
事件,使用戶靜音並發送如下確認消息:
@anon#1234 has now been muted for 5 s
不幸的是 Discord 無法識別此消息中的用戶名作為提及。 如何使用msg.channel.send
function 提及特定用戶? 此示例包含發送確認消息的代碼:
bot.on("message", msg => {
let args = msg.content.substring(PREFIX.length).split(" ")
let time = args[2]
let person = msg.guild.member(msg.mentions.users.first() || msg.guild.members.fetch(args[1]))
// muting the user here and sending confirmation message
msg.channel.send(`@${person.user.tag} has now been muted for ${time} s`)
setTimeout(() => {
// unmuting the user after specified time and
// sending confirmation message
msg.channel.send(`@${person.user.tag} has been unmuted.`)
}, time * 1000);
})
此示例中不包含靜音,它可以工作。 消息已正確發送,但未提及用戶,這意味着用戶名不可點擊且未突出顯示。
文檔建議以這種方式提及用戶:
const message = `${user} has been muted`;
上面的示例使用模板字符串,因此會自動調用User
object 的toString
方法。 雖然可以手動調用它:
const message = user.toString() + "has been muted";
該文檔指出:
當與字符串連接時,此 [用戶對象] 會自動返回用戶的提及而不是用戶 object。
這意味着每次調用toString
時,無論是通過模板、字符串連接還是手動調用toString
,用戶 object 都會被轉換為提及。 Discord 將正確解釋 output,突出顯示並使其可點擊。
在您的情況下,您將像這樣使用上面的示例:
msg.channel.send(`${person.user} has now been muted for ${time} s`)
setTimeout(() => {
...
msg.channel.send(`${person.user} has been unmuted.`)
}, time * 1000)
您還可以通過以下方式標記用戶
`<@${id}>` // users
`<@&${id}>` // roles
當然,您需要知道用戶 ID 或角色 ID 才能做到這一點。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.