Discord.js 发送一个网络钩子

时间:2021-02-12 23:10:07

标签: node.js discord discord.js

嗨,我一直在试验 webhooks,我想知道您如何通过带有自定义头像和名称的 webhook 发送普通消息(未嵌入)


        const user = message.mentions.users.first() || client.users.cache.get(args[0]);
        let announcement = args.slice(1).join(" ");
        if(!announcement) return message.channel.send(`lol say something`)

        const wc = new WebhookClient('id', 'token')
        const embed = new MessageEmbed()
            .setTitle("").setColor('GREEN').setTimestamp().setDescription(announcement)
    wc.send({
        username : user.username,
        avatarURL : user.displayAvatarURL({ dynamic : true }),
        embeds : [embed]
    })
    
    }
    ```

1 个答案:

答案 0 :(得分:0)

如果您希望发送 Discord 网络钩子,您需要向网络钩子网址发出 POST API 请求。

为此,您基本上可以使用任何您想要的模块,但是在本例中我将使用 node-fetch。只需将其安装在您的控制台中

npm install node-fetch

然后在需要使用的地方要求它

const fetch = require('node-fetch');

现在我们有了让它工作所需的东西,让我们创建 API 请求。

为此,我们从 params 变量开始。您可以在此处设置使 webhook 看起来像您想要的样子的所有内容。 注意:我还包括了如何发送嵌入以防万一。如果您想查看所有选项,请选中 here

var params = {
    username: "Your name",
    avatar_url: "",
    content: "Some message you want to send",
    embeds: [
        {
            "title": "Some title",
            "color": 15258703,
            "thumbnail": {
                "url": "",
            },
            "fields": [
                {
                    "name": "Your fields here",
                    "value": "Whatever you wish to send",
                    "inline": true
                }
            ]
        }
    ]
}

现在我们有了参数,我们可以创建实际的 POST 请求。为此,您只需调用 fetch 函数并提供 webhook 网址。

首先指定要使用的方法。默认情况下,该方法为 GET。接下来确保将标题设置为 'Content-type': 'application/json',否则您将收到错误消息。最后在正文中包含前面的 params。我们在这里使用 JSON.stringify() 来使其工作。

fetch('URL', {
    method: "POST",
    headers: {
        'Content-type': 'application/json'
    },
    body: JSON.stringify(params)
}).then(res => {
    console.log(res);
}) 

最后,您可以选择捕获可能收到的任何错误。