JavaScript WebSocket:接收来自不一致的消息

zbwhf8kr  于 5个月前  发布在  Java
关注(0)|答案(1)|浏览(83)

所以.我有一个应用程序,与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中断。

qeeaahzv

qeeaahzv1#

您的代码 * 几乎 * 正确,您只是缺少消息内容intent. Message Content was made a privileged intent in 2022,因此必须在您的应用和Discord开发者 Jmeter 板中启用。

相关问题