嗨,我一直在试验 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]
})
}
```
答案 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);
})
最后,您可以选择捕获可能收到的任何错误。