簡體   English   中英

如何在帶有 discord.js 的消息中提及用戶?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM