Fix bridging interaction responses and edits
This commit is contained in:
parent
e2dffe457e
commit
7790d98c66
5 changed files with 201 additions and 3 deletions
|
@ -12,6 +12,8 @@ const api = sync.require("../../matrix/api")
|
|||
const registerUser = sync.require("./register-user")
|
||||
/** @type {import("../actions/create-room")} */
|
||||
const createRoom = sync.require("../actions/create-room")
|
||||
/** @type {import("../../discord/utils")} */
|
||||
const dUtils = sync.require("../../discord/utils")
|
||||
|
||||
/**
|
||||
* @param {import("discord-api-types/v10").GatewayMessageCreateDispatchData} message
|
||||
|
@ -21,7 +23,7 @@ async function sendMessage(message, guild) {
|
|||
const roomID = await createRoom.ensureRoom(message.channel_id)
|
||||
|
||||
let senderMxid = null
|
||||
if (!message.webhook_id) {
|
||||
if (!dUtils.isWebhookMessage(message)) {
|
||||
if (message.member) { // available on a gateway message create event
|
||||
senderMxid = await registerUser.syncUser(message.author, message.member, message.guild_id, roomID)
|
||||
} else { // well, good enough...
|
||||
|
|
|
@ -24,7 +24,7 @@ async function editToChanges(message, guild, api) {
|
|||
const roomID = select("channel_room", "room_id", {channel_id: message.channel_id}).pluck().get()
|
||||
assert(roomID)
|
||||
/** @type {string?} Null if we don't have a sender in the room, which will happen if it's a webhook's message. The bridge bot will do the edit instead. */
|
||||
const senderMxid = from("sim").join("sim_member", "mxid").where({user_id: message.author.id}).pluck("mxid").get() || null
|
||||
const senderMxid = from("sim").join("sim_member", "mxid").where({user_id: message.author.id, room_id: roomID}).pluck("mxid").get() || null
|
||||
|
||||
const oldEventRows = select("event_message", ["event_id", "event_type", "event_subtype", "part"], {message_id: message.id}).all()
|
||||
|
||||
|
|
|
@ -141,7 +141,6 @@ const utils = {
|
|||
await eventDispatcher.onChannelOrThreadUpdate(client, message.d, true)
|
||||
|
||||
} else if (message.t === "MESSAGE_CREATE") {
|
||||
console.log(message.d)
|
||||
await eventDispatcher.onMessageCreate(client, message.d)
|
||||
|
||||
} else if (message.t === "MESSAGE_UPDATE") {
|
||||
|
|
|
@ -47,4 +47,14 @@ function getPermissions(userRoles, guildRoles, userID, channelOverwrites) {
|
|||
return allowed
|
||||
}
|
||||
|
||||
/**
|
||||
* Command interaction responses have a webhook_id for some reason, but still have real author info of a real bot user in the server.
|
||||
* @param {DiscordTypes.APIMessage} message
|
||||
*/
|
||||
function isWebhookMessage(message) {
|
||||
const isInteractionResponse = message.type === 20
|
||||
return message.webhook_id && !isInteractionResponse
|
||||
}
|
||||
|
||||
module.exports.getPermissions = getPermissions
|
||||
module.exports.isWebhookMessage = isWebhookMessage
|
||||
|
|
187
test/data.js
187
test/data.js
|
@ -2007,6 +2007,193 @@ module.exports = {
|
|||
},
|
||||
attachments: [],
|
||||
guild_id: "1100319549670301727"
|
||||
},
|
||||
bridge_echo_webhook: {
|
||||
webhook_id: "1160692755144654970",
|
||||
type: 0,
|
||||
tts: false,
|
||||
timestamp: "2023-10-09T21:15:58.866000+00:00",
|
||||
pinned: false,
|
||||
mentions: [],
|
||||
mention_roles: [],
|
||||
mention_everyone: false,
|
||||
id: "1161049444674973706",
|
||||
flags: 0,
|
||||
embeds: [],
|
||||
edited_timestamp: null,
|
||||
content: "ready when you are",
|
||||
components: [],
|
||||
channel_id: "497161350934560778",
|
||||
author: {
|
||||
username: "cadence [they]",
|
||||
id: "1160692755144654970",
|
||||
discriminator: "0000",
|
||||
bot: true,
|
||||
avatar: "af0ead3b92cf6e448fdad80b4e7fc9e5"
|
||||
},
|
||||
attachments: [],
|
||||
application_id: "684280192553844747",
|
||||
guild_id: "497159726455455754"
|
||||
},
|
||||
crosspost_announcement: {
|
||||
id: "1152745817678028840",
|
||||
type: 0,
|
||||
content: "All text based commands are now inactive on Chewey Bot\nTo continue using commands you'll need to use them as slash commands",
|
||||
channel_id: "500454381414514688",
|
||||
author: {
|
||||
id: "748007224353226832",
|
||||
username: "Chewey Bot Official Server #announcements",
|
||||
avatar: "427b2893c574b90f1c6bb54da2c609cb",
|
||||
discriminator: "0000",
|
||||
public_flags: 0,
|
||||
flags: 0,
|
||||
bot: true
|
||||
},
|
||||
attachments: [],
|
||||
embeds: [],
|
||||
mentions: [],
|
||||
mention_roles: [],
|
||||
pinned: false,
|
||||
mention_everyone: false,
|
||||
tts: false,
|
||||
timestamp: "2023-09-16T23:20:19.916000+00:00",
|
||||
edited_timestamp: null,
|
||||
flags: 2,
|
||||
components: [],
|
||||
webhook_id: "748007224353226832",
|
||||
message_reference: {
|
||||
channel_id: "372274661439832065",
|
||||
message_id: "1152745799596384263",
|
||||
guild_id: "372271956562542592"
|
||||
}
|
||||
},
|
||||
},
|
||||
interaction_message: {
|
||||
thinking_interaction_without_bot_user: {
|
||||
webhook_id: "1109360903096369153",
|
||||
type: 20,
|
||||
tts: false,
|
||||
timestamp: "2023-10-09T21:16:11.673000+00:00",
|
||||
pinned: false,
|
||||
nonce: "1161049469261709312",
|
||||
mentions: [],
|
||||
mention_roles: [],
|
||||
mention_everyone: false,
|
||||
interaction: {
|
||||
user: {
|
||||
username: "papiophidian",
|
||||
public_flags: 4194880,
|
||||
id: "320067006521147393",
|
||||
global_name: "PapiOphidian",
|
||||
discriminator: "0",
|
||||
avatar_decoration_data: null,
|
||||
avatar: "5fc4ad85c1ea876709e9a7d3374a78a1"
|
||||
},
|
||||
type: 2,
|
||||
name: "stats",
|
||||
member: {
|
||||
roles: [],
|
||||
premium_since: null,
|
||||
pending: false,
|
||||
nick: "Brad",
|
||||
mute: false,
|
||||
joined_at: "2018-10-03T21:35:50.974000+00:00",
|
||||
flags: 0,
|
||||
deaf: false,
|
||||
communication_disabled_until: null,
|
||||
avatar: null
|
||||
},
|
||||
id: "1161049497724534825"
|
||||
},
|
||||
id: "1161049498391425196",
|
||||
flags: 128,
|
||||
embeds: [],
|
||||
edited_timestamp: null,
|
||||
content: "",
|
||||
components: [],
|
||||
channel_id: "497161350934560778",
|
||||
author: {
|
||||
username: "Amanda 🎵",
|
||||
public_flags: 524288,
|
||||
id: "1109360903096369153",
|
||||
global_name: null,
|
||||
discriminator: "2192",
|
||||
bot: true,
|
||||
avatar_decoration_data: null,
|
||||
avatar: "e4a45abe5f8ee44f0b59b79a08bdb2ac"
|
||||
},
|
||||
attachments: [],
|
||||
application_id: "1109360903096369153",
|
||||
guild_id: "497159726455455754"
|
||||
},
|
||||
thinking_interaction: {
|
||||
webhook_id: "1109360903096369153",
|
||||
type: 20,
|
||||
tts: false,
|
||||
timestamp: "2023-10-09T21:18:45.002000+00:00",
|
||||
pinned: false,
|
||||
nonce: "1161050112089128960",
|
||||
mentions: [],
|
||||
mention_roles: [],
|
||||
mention_everyone: false,
|
||||
member: {
|
||||
roles: [ "604073998749270046" ],
|
||||
premium_since: null,
|
||||
pending: false,
|
||||
nick: null,
|
||||
mute: false,
|
||||
joined_at: "2023-10-09T21:18:30.600000+00:00",
|
||||
flags: 1,
|
||||
deaf: false,
|
||||
communication_disabled_until: null,
|
||||
avatar: null
|
||||
},
|
||||
interaction: {
|
||||
user: {
|
||||
username: "papiophidian",
|
||||
public_flags: 4194880,
|
||||
id: "320067006521147393",
|
||||
global_name: "PapiOphidian",
|
||||
discriminator: "0",
|
||||
avatar_decoration_data: null,
|
||||
avatar: "5fc4ad85c1ea876709e9a7d3374a78a1"
|
||||
},
|
||||
type: 2,
|
||||
name: "stats",
|
||||
member: {
|
||||
roles: [],
|
||||
premium_since: null,
|
||||
pending: false,
|
||||
nick: "Brad",
|
||||
mute: false,
|
||||
joined_at: "2018-10-03T21:35:50.974000+00:00",
|
||||
flags: 0,
|
||||
deaf: false,
|
||||
communication_disabled_until: null,
|
||||
avatar: null
|
||||
},
|
||||
id: "1161050140640018472"
|
||||
},
|
||||
id: "1161050141499863120",
|
||||
flags: 128,
|
||||
embeds: [],
|
||||
edited_timestamp: null,
|
||||
content: "",
|
||||
components: [],
|
||||
channel_id: "497161350934560778",
|
||||
author: {
|
||||
username: "Amanda 🎵",
|
||||
public_flags: 524288,
|
||||
id: "1109360903096369153",
|
||||
global_name: null,
|
||||
discriminator: "2192",
|
||||
bot: true,
|
||||
avatar_decoration_data: null,
|
||||
avatar: "e4a45abe5f8ee44f0b59b79a08bdb2ac"
|
||||
},
|
||||
attachments: [],
|
||||
application_id: "1109360903096369153",
|
||||
guild_id: "497159726455455754"
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue