From 4fd408d62ae0aa49a727da94c850ed26196823cd Mon Sep 17 00:00:00 2001 From: Cadence Ember Date: Wed, 5 Jul 2023 08:41:15 +1200 Subject: [PATCH] reactions working --- d2m/event-dispatcher.js | 10 ++++++---- db/ooye.db | Bin 258048 -> 258048 bytes index.js | 4 ++++ m2d/actions/add-reaction.js | 4 +++- notes.md | 2 +- package-lock.json | 20 ++++++++++---------- 6 files changed, 24 insertions(+), 16 deletions(-) diff --git a/d2m/event-dispatcher.js b/d2m/event-dispatcher.js index 99c7792..1686b5f 100644 --- a/d2m/event-dispatcher.js +++ b/d2m/event-dispatcher.js @@ -14,10 +14,6 @@ module.exports = { * @param {import("discord-api-types/v10").GatewayMessageCreateDispatchData} message */ onMessageCreate(client, message) { - /** @ts-ignore @type {import("discord-api-types/v10").APIGuildChannel} */ - const channel = client.channels.get(message.channel_id) - const guild = client.guilds.get(channel.guild_id) - if (message.guild_id !== "112760669178241024" && message.guild_id !== "497159726455455754") return // TODO: activate on other servers (requires the space creation flow to be done first) if (message.webhook_id) { const row = db.prepare("SELECT webhook_id FROM webhook WHERE webhook_id = ?").pluck().get(message.webhook_id) if (row) { @@ -25,6 +21,11 @@ module.exports = { return } } + /** @type {import("discord-api-types/v10").APIGuildChannel} */ + const channel = client.channels.get(message.channel_id) + if (!channel.guild_id) return // Nothing we can do in direct messages. + const guild = client.guilds.get(channel.guild_id) + if (message.guild_id !== "112760669178241024" && message.guild_id !== "497159726455455754") return // TODO: activate on other servers (requires the space creation flow to be done first) sendMessage.sendMessage(message, guild) }, @@ -33,6 +34,7 @@ module.exports = { * @param {import("discord-api-types/v10").GatewayMessageReactionAddDispatchData} data */ onReactionAdd(client, data) { + if (data.user_id === client.user.id) return // m2d reactions are added by the discord bot user - do not reflect them back to matrix. if (data.emoji.id !== null) return // TODO: image emoji reactions console.log(data) addReaction.addReaction(data) diff --git a/db/ooye.db b/db/ooye.db index df5e6d199d8c0d1918dcbb6d2f18f403e9c8b19d..8400cf00121fc350e6c60be96d1e485b122b8a1b 100644 GIT binary patch delta 8578 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 delta 3268 zcmZWr2~=0b9=&s#Ou4u$nL5V^+|3q8p_>ysM4=IewW zE`5ce4B?!%yA;3aZ2}Av4tAKn!PP3_#rh^6`z@Y)w4S^66 zOjeMiR`t=1%1TSW(=4`=Ev4{l18qRv80YvSpCR4g2}_yF{kg7sMRR0 z3U^{&MD@5N42jxElq^WIq;I5BYNep@npi3O#8&xj+)QVupzz`y=bhwKlwr}@4ivv# zT!`Wz1ofdx6&h8%tyx|)QXD%mo2I0q5l&h)+8PQ$coJ0_(4gwAT`{cgI@qpW6;5v? z;wS6{OS{?yC4o-MSrlgGvTTkP`w668o=UdJ-;?=LAMr35O?2yu^^vvIN|0_UO;$Iv z#jFyO&DYFH@@lh(*iT6^+Kjzw7j>)>V5|{;Qg#`CH6GS~(rfh%x=(sW4$&jDyK;?o zT-&6jX)&7MsrPL0%#-$cMo4Qts<>Xgq*f>^u)3sr>vn(`$e>L}AW}j*IXu*XBW1LM zK};9?0R1Jjozv}GxT2iH>Z8CEWv-&>CRb2S|A)~MD&cVS=UlPURlIu<`pf7Q7pGk2 z>N#9Oj&aFMmp;S#{4Fq;zU%3=5y97@p)E~tY@ly0AyJ(T*k;RtaqpMU>2n-}(T7<+Wod-X(#z1r6g#7s^}{QOtzoa~HR`i`PX#hF!ZmQgo-2cCgSUb1SE8 zmgN`inQ1Y5N|7g&e^*eeJuSbleKqF^ znlutWOlv3L-gaTZD0|`R{?zXx3UKsM`0ms2h;-0aswP%%&6J#j-@{m~q7?h>c@mIc zu8}Pa5%wc3-g6%n;z0QoHNY64x8fN}gD2ZFKy6jGsXlF;blr>>_Tw_$9~MItZj(x- z7o_eeQHhuDi(kP$@eL%1@p6Co9i1in<-KGv8KC<-d-ZL~I;+*%X8Fu@mcQAcH7M(h zeaz^Chb~XSBb?uBu_#md7LJn=#Ee0hwtoX&y7oApLXXIhXb63=S$4W8BA}l!Csnd!4%qIf%k!l zyk_vqsFvHK8&2afG(ZBIrhSDI=nxs!(=ZhZoZ5OE?-#5Z7ZBTNgq3LiYW6ZNnExPs ztRgaBpXY=&v2Pe|4C-GbK!f~AFJnP^cYOY!#3>0cXye!(D1D++GD78&P=q+)w zsKQZLrJaM}R+%-!3N+7|8_ekg`DVT97J)qIvnDrQ4m5jU513lr4q?Zfvm=?4`oXCqz>$kFo z^0(kJJ#!Ue74)3zo4x!nbL}X-sWLaxb+%tQN5guuNUSy?5z|Fyx$~=Oa1ZA9%|JG} zq8H@TH`{UIgRX3;0Izev12YioUF47Kn0{W0hkV=A(^k_gBkp1k`Mp3^w2oBX#^&Z*_gF0Qe+Yfo2wlNSKf}*ID0uiHFpR9zT_$R!R-zaD!o{f8V+OXOl^v+o{8C}-5 z={`L`JF69HiJFi;C2{z$@y@&ycv-z7#IDi0>hS!^P=h7dUCWYQ*6AkPlw;E%Rdu ziROOj<P_AHw4@}TJKr8A$3o|E?fO!nYTj^-_d3nH!&3Tc-d z=55whRw48P^<}aOw=9CQqVkTANFzG%m~{Jr z14q#5IS_zh1P%KEkE0=(EbhyxkRY<3*GxJs6~?${ndYuy#sX)u2KCQ^@qD(L-pYbC z9EDRem(4a`!@+dkEbuZ8y-yc#Zro1XO`5>Fm6r1NUta{`l&=6^_grh1Fa%8%te)mY zvlzZ0`^|}_WYpr`XcL-hESK(x(~KeLYpYeit?v-8N`0(tEN#2UVrjRYuJ_WeXdC6# z_-9eqrpm`fsx-+Xc|kPI^Mxl*dKq#(Bj9o69sH7dN39|QSnU7v6z{I5Q;$F+`-S}T zE5QD(yw1*}5QgY=3UQ8p3_ew9^LOluzP}j?o#NBb4?jpN`-kz;`}MHGSyl?K_X;s5 z3PXiDWXjSVIQ~(ZDQp)+QIM3H=L0rkdEl4pg-oY zJ7wi&7)=|$!xo*j6UU+?nzF*Jq>yh{rZQ`*pgXV4HCma)j7zTpp;vFQ8`ysfq+w@S I1FY@!Ukp;jAOHXW diff --git a/index.js b/index.js index f4c59c6..233d518 100644 --- a/index.js +++ b/index.js @@ -21,6 +21,10 @@ passthrough.as = as sync.require("./m2d/event-dispatcher") +discord.snow.requestHandler.on("requestError", data => { + console.error("request error", data) +}) + ;(async () => { await discord.cloud.connect() console.log("Discord gateway started") diff --git a/m2d/actions/add-reaction.js b/m2d/actions/add-reaction.js index 342550d..d259ddb 100644 --- a/m2d/actions/add-reaction.js +++ b/m2d/actions/add-reaction.js @@ -17,7 +17,9 @@ async function addReaction(event) { // no need to sync the matrix member to the other side. but if I did need to, this is where I'd do it - const emoji = event.content["m.relates_to"].key // TODO: handle custom text or emoji reactions + let emoji = event.content["m.relates_to"].key // TODO: handle custom text or emoji reactions + emoji = encodeURIComponent(emoji) + emoji = emoji.replace(/%EF%B8%8F/g, "") return discord.snow.channel.createReaction(channelID, messageID, emoji) } diff --git a/notes.md b/notes.md index 3491682..ec2b9bb 100644 --- a/notes.md +++ b/notes.md @@ -104,7 +104,7 @@ Can use custom transaction ID (?) to send the original timestamps to Matrix. See ## Reaction removed -1. Remove reaction on matrix. +1. Remove reaction on matrix. Just redact the event. ## Member data changed diff --git a/package-lock.json b/package-lock.json index fecb682..4908aa6 100644 --- a/package-lock.json +++ b/package-lock.json @@ -685,11 +685,11 @@ } }, "node_modules/cloudstorm": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/cloudstorm/-/cloudstorm-0.8.0.tgz", - "integrity": "sha512-CT5/RKvSz1I0wmsf0SmZ2Jg9fPvqY67t9e2Y8n92vU0uEK5WmfPUyPOLZoYPMJwmktmsVCj4N6Pvka9gBIsY4g==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/cloudstorm/-/cloudstorm-0.8.2.tgz", + "integrity": "sha512-G/P6/+LwXjiS6AmheRG+07DmmsrpHpt21JFMhe+rW8VagFOOKemC2Bcru+Qncl/5jdjZC2gzjKpjfdTjfUm+iw==", "dependencies": { - "snowtransfer": "0.8.0" + "snowtransfer": "^0.8.2" }, "engines": { "node": ">=12.0.0" @@ -1938,9 +1938,9 @@ } }, "node_modules/node-fetch": { - "version": "2.6.9", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.9.tgz", - "integrity": "sha512-DJm/CJkZkRjKKj4Zi4BsKVZh3ValV5IR5s7LVZnW+6YMh0W1BfNA8XSs6DLMGYlId5F3KnA70uu2qepcR08Qqg==", + "version": "2.6.12", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.6.12.tgz", + "integrity": "sha512-C/fGU2E8ToujUivIO0H+tpQ6HWo4eEmchoPIoXtxCrVghxdKq+QOHqEZW7tuP3KlV3bC8FRMO5nMCC7Zm1VP6g==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -2464,9 +2464,9 @@ } }, "node_modules/snowtransfer": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/snowtransfer/-/snowtransfer-0.8.0.tgz", - "integrity": "sha512-ang6qQsET4VX4u9mdZq6ynJvcm8HQfV6iZOHBh8Y3T0QkJLr6GAjzcv1et7BOXl1HDR/6NhD+j+ZGr8+imTclg==", + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/snowtransfer/-/snowtransfer-0.8.2.tgz", + "integrity": "sha512-fAmaJSpFZqGwAvbrhT3XOWwhbiuHOgxN8pGeKnDDW0f8zdkPmSQT9aekXhFr1WukB94NIALYGcyIXe902p8S4A==", "dependencies": { "discord-api-types": "^0.37.47", "form-data": "^4.0.0",