| 8 | * @returns {Object} |
| 9 | */ |
| 10 | const serializeMessage = async message => { |
| 11 | const { type, author, member, stickers, embeds, mentions, guild } = message |
| 12 | |
| 13 | let repliesTo = null |
| 14 | try { |
| 15 | if (type === MessageType.Reply) repliesTo = await message.fetchReference() |
| 16 | } catch (error) { |
| 17 | // Fix for #31 |
| 18 | // Man... I want to put an easter bug here, but idk |
| 19 | } |
| 20 | |
| 21 | return { |
| 22 | ...message, |
| 23 | author: { |
| 24 | ...author, |
| 25 | avatarURL: author.displayAvatarURL(), |
| 26 | isVerifiedBot: author.flags?.has(UserFlags.VerifiedBot), |
| 27 | }, |
| 28 | member: member ? serializeGuildMember(member) : null, |
| 29 | isDM: message.channel.type === ChannelType.DM, |
| 30 | deletable: message.deletable, |
| 31 | embeds: embeds.map(embed => { |
| 32 | return { |
| 33 | ...embed.toJSON(), |
| 34 | hexColor: embed.hexColor, |
| 35 | } |
| 36 | }), |
| 37 | stickers: [ |
| 38 | ...stickers |
| 39 | .map(sticker => { |
| 40 | return { |
| 41 | ...sticker, |
| 42 | url: sticker.url, |
| 43 | } |
| 44 | }) |
| 45 | .values(), |
| 46 | ], |
| 47 | mentions: { |
| 48 | members: mentions.members |
| 49 | ? [ |
| 50 | ...mentions.members.mapValues(member => |
| 51 | serializeGuildMember(member) |
| 52 | ), |
| 53 | ] |
| 54 | : [], |
| 55 | users: [...mentions.users], |
| 56 | roles: [...mentions.roles], |
| 57 | everyone: mentions.everyone, |
| 58 | channels: [...mentions.channels], |
| 59 | me: |
| 60 | mentions.everyone || |
| 61 | mentions.roles.find( |
| 62 | role => |
| 63 | guild.me.roles.botRole?.id === role.id || |
| 64 | guild.me.roles.cache.has(role.id) |
| 65 | ) || |
| 66 | mentions.users.has(message.client.user.id), |
| 67 | }, |
no test coverage detected