diff --git a/packages/bolt-revolt/mod.ts b/packages/bolt-revolt/mod.ts index 5c843c1..16a0e4b 100644 --- a/packages/bolt-revolt/mod.ts +++ b/packages/bolt-revolt/mod.ts @@ -76,7 +76,8 @@ export default class RevoltPlugin extends BoltPlugin { } case 'delete': { const channel = await this.bot.channels.fetch(data.data.channel); - await channel.deleteMessages([data.data.id]); + const msg = await channel.fetchMessage(data.data.id); + await msg.delete(); return { ...data.data.bridgePlatform, id: data.data.id }; } } diff --git a/packages/bolt/lib/bolt.ts b/packages/bolt/lib/bolt.ts index a6e95ff..b32105e 100644 --- a/packages/bolt/lib/bolt.ts +++ b/packages/bolt/lib/bolt.ts @@ -93,11 +93,11 @@ export class Bolt extends EventEmitter { private registerPluginEvents() { // TODO: move all code below to bridge folder this.on('messageCreate', async msg => { - if (await getBoltBridgedMessage(this, msg.id)) return; + if (await getBoltBridgedMessage(this, true, msg.id)) return; bridgeBoltMessage(this, 'create', msg); }); this.on('messageUpdate', async msg => { - if (await getBoltBridgedMessage(this, msg.id)) return; + if (await getBoltBridgedMessage(this, true, msg.id)) return; bridgeBoltMessage(this, 'update', msg); }); this.on('messageDelete', async msg => { diff --git a/packages/bolt/lib/bridge/bridge.ts b/packages/bolt/lib/bridge/bridge.ts index 1caade8..5f8e080 100644 --- a/packages/bolt/lib/bridge/bridge.ts +++ b/packages/bolt/lib/bridge/bridge.ts @@ -21,7 +21,7 @@ export async function bridgeBoltMessage( const platforms: (BoltBridgePlatform | BoltBridgeSentPlatform)[] | false = type === 'create' ? bridge.platforms.filter(i => i.channel !== message.channel) - : await getBoltBridgedMessage(bolt, message.id); + : await getBoltBridgedMessage(bolt, false, message.id); if (!platforms || platforms.length < 1) return; @@ -46,7 +46,7 @@ export async function bridgeBoltMessage( : (platform as BoltBridgeSentPlatform).thread?.id : undefined; - const replyto = await getBoltBridgedMessage(bolt, message.replyto?.id); + const replyto = await getBoltBridgedMessage(bolt, false, message.replyto?.id); if (bridge.settings?.realnames && 'author' in message) { message.author.username = message.author.rawname; @@ -110,7 +110,7 @@ export async function bridgeBoltMessage( if (type !== 'delete') { for (const i of data) { // since this key is used to prevent echo, 15 sec expiry should be enough - await bolt.redis?.set(`message-${i.id}`, JSON.stringify(data), { + await bolt.redis?.set(`message-temp-${i.id}`, JSON.stringify(data), { ex: 15 }); } diff --git a/packages/bolt/lib/bridge/utils.ts b/packages/bolt/lib/bridge/utils.ts index cc4bfce..72055bc 100644 --- a/packages/bolt/lib/bridge/utils.ts +++ b/packages/bolt/lib/bridge/utils.ts @@ -1,8 +1,8 @@ import { Bolt } from '../bolt.ts'; import { BoltBridgeDocument, BoltBridgeSentPlatform } from './types.ts'; -export async function getBoltBridgedMessage(bolt: Bolt, id?: string) { - return JSON.parse((await bolt.redis?.get(`message-${id}`)) || 'false') as +export async function getBoltBridgedMessage(bolt: Bolt, bCheck: Boolean, id?: string) { + return JSON.parse((await bolt.redis?.get(`message${bCheck ? "-temp" : ""}-${id}`)) || 'false') as | BoltBridgeSentPlatform[] | false; } diff --git a/packages/bolt/lib/commands/commands.ts b/packages/bolt/lib/commands/commands.ts index 3f1b074..96df6c7 100644 --- a/packages/bolt/lib/commands/commands.ts +++ b/packages/bolt/lib/commands/commands.ts @@ -14,7 +14,7 @@ export class BoltCommands { this.bolt = bolt; this.registerCommands(...defaultcommands); bolt.on('messageCreate', async msg => { - if (await getBoltBridgedMessage(bolt, msg.id)) return; + if (await getBoltBridgedMessage(bolt, true, msg.id)) return; if (msg.content?.startsWith('!bolt')) { let [_, name, ...arg] = msg.content.split(' '); this.runCommand({