所以.我有一个应用程序,与JavaScript通信与WebView 2对象,在C# WinForms.然而,大多数处理消息是在javascript/html当然,所以我设置一个WebSocket,它有点工作?我的和只有我的消息内容正在显示,就像,如果我发送消息,那么它会在控制台中记录它,有头像和所有的。但是如果其他人发送了一条消息,那么它会记录头像和名字,而不是消息内容?然后WebSocket关闭。我的令牌也是有效的。
var ws = new WebSocket("wss://gateway.discord.gg/?v=9&encoding=json");
var interval = 0;
payload = {
op: 2
, d: {
token: ""
, intents: 512
, properties: {
$os: "linux", // this works fine
$browser: "chrome"
, $device: "chrome"
, }
, }
, };
ws.addEventListener("open", function open(x) {
ws.send(JSON.stringify(payload));
});
ws.addEventListener("message", function incoming(data) {
var x = data.data;
var payload = JSON.parse(x);
const {
t
, event
, op
, d
} = payload;
switch (op) {
case 10:
const {
heartbeat_interval
} = d;
setInterval(() => {
ws.send(JSON.stringify({
op: 2
, d: null
}));
}, heartbeat_interval);
break;
}
switch (t) {
// yes targetChannelId is CORRECT.
case "MESSAGE_CREATE":
if (d.channel_id === targetChannelId) {
var final = {
author: d.author.username
, content: d.content
, image: `${d.author.avatar ? `https://cdn.discordapp.com/avatars/${d.author.id}/${d.author.avatar}.png` : 'N/A'}`
}
appendMessageWithFrame(final); // call
console.log(d);
// this is where i'm confused. d.content is blank when someone else types? but when i type its not blank??
console.log(`${d.author.username}: ${d.content}, Avatar URL: ${d.author.avatar ? `https://cdn.discordapp.com/avatars/${d.author.id}/${d.author.avatar}.png` : 'N/A'}`);
}
break;
}
});
字符串
尝试仔细检查我的token,它显然是正确的,检查了targetsockelId,也是正确的,检查了d
数组,仍然是正确的,直到其他人键入,然后d.content为空,WebSocket中断。
1条答案
按热度按时间qeeaahzv1#
您的代码 * 几乎 * 正确,您只是缺少消息内容intent. Message Content was made a privileged intent in 2022,因此必须在您的应用和Discord开发者 Jmeter 板中启用。