繁体   English   中英

如何在 discordjs 中获取已发送消息的消息链接?

[英]How can I grab the message link of a sent message in discordjs?

我正在尝试为我的 discord 机器人开发更详细的日志记录系统,这就是我目前拥有的:

client.on('message', message => {

    if (message.author.bot) return; //don't log its own messages

    const channel = client.channels.cache.get('805457298867879936'); //sent logs to this channel
    channel.send(
        `${message.author} in ${message.channel} of ${message.guild} said ${message.content}`, //log in discord channel
    );
    
    console.log(
        `${message.author.tag} in #${message.channel.name} of ${message.guild.name} said: ${message.content}`, //log in console
    );

client.login(token); //login

此代码记录机器人可以在特定频道和我的控制台中看到的所有发送消息。 但是,我还想有一个已发送消息的消息链接。 例如,这是我目前记录的内容: Kingamezz#02XX in #testing of Testing Server said: test而我想要的是: Kingamezz#02XX in #testing of Testing Server said: test (https://discord.com/channels/763786268181397524/805457298867879936/805502804134330448)所以我可以直接跳到消息。

我不知道如何抓取消息的消息链接,discordjs 文档似乎没有关于消息链接的任何内容。 我试过这个:

channel.send(
    "https://discord.com/channels/" + guild.id + "/" + message.id
)

但它导致“公会未定义”。 我这样做对吗?

您可以使用Message.url属性来获取可以跳转到的 url ,如下所示:

channel.send(message.url);

文档: https://discord.js.org/#/docs/main/master/class/Message?scrollTo=url

此外,您当前代码不起作用的原因是没有公会 object,只有一条消息 object。 因此,您首先必须从消息 object 中获取公会,才能访问公会属性。 因此,如果您想坚持使用当前的代码,您也可以这样做:

channel.send(
    "https://discord.com/channels/" + message.guild.id + "/" + message.guild.id
)

但是,第二种解决方案需要注意的一点是,如果该消息是直接消息,则可能会出错,因为该消息不是在公会中发送的。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM