fix mentions issues
This commit is contained in:
parent
652657d78f
commit
d42519e330
@ -324,8 +324,31 @@ export async function handleMessage(opts: MessageOptions): Promise<Message> {
|
||||
];
|
||||
|
||||
message.mention_everyone = mention_everyone;
|
||||
|
||||
if (mention_everyone || channel.type === ChannelType.DM || channel.type === ChannelType.GROUP_DM) {
|
||||
async function fillInMissingIDs(ids: string[]) {
|
||||
const states = await ReadState.findBy({
|
||||
user_id: Or(...ids.map((id) => Equal(id))),
|
||||
channel_id: channel.id,
|
||||
});
|
||||
const users = new Set(ids);
|
||||
states.forEach((state) => users.delete(state.user_id));
|
||||
if (!users.size) {
|
||||
return;
|
||||
}
|
||||
return Promise.all(
|
||||
[...users].map((user_id) => {
|
||||
return ReadState.create({ user_id, channel_id: channel.id }).save();
|
||||
}),
|
||||
);
|
||||
}
|
||||
if (!!message.content?.match(EVERYONE_MENTION) || channel.type === ChannelType.DM || channel.type === ChannelType.GROUP_DM) {
|
||||
if (channel.type === ChannelType.DM || channel.type === ChannelType.GROUP_DM) {
|
||||
if (channel.recipients) {
|
||||
await fillInMissingIDs(channel.recipients.map(({ user_id }) => user_id));
|
||||
}
|
||||
} else {
|
||||
console.log(channel.guild_id);
|
||||
await fillInMissingIDs((await Member.find({ where: { guild_id: channel.guild_id } })).map(({ id }) => id));
|
||||
}
|
||||
const repository = ReadState.getRepository();
|
||||
const condition = { channel_id: channel.id };
|
||||
repository.update({ ...condition, mention_count: IsNull() }, { mention_count: 0 });
|
||||
@ -344,11 +367,15 @@ export async function handleMessage(opts: MessageOptions): Promise<Message> {
|
||||
).map((member) => member.id),
|
||||
...message.mentions.map((user) => user.id),
|
||||
]);
|
||||
|
||||
if (users.size) {
|
||||
const repository = ReadState.getRepository();
|
||||
const condition = { user_id: Or(...[...users].map((id) => Equal(id))), channel_id: channel.id };
|
||||
repository.update({ ...condition, mention_count: IsNull() }, { mention_count: 0 });
|
||||
repository.increment(condition, "mention_count", 1);
|
||||
|
||||
await fillInMissingIDs([...users]);
|
||||
|
||||
await repository.update({ ...condition, mention_count: IsNull() }, { mention_count: 0 });
|
||||
await repository.increment(condition, "mention_count", 1);
|
||||
}
|
||||
}
|
||||
|
||||
// TODO: check and put it all in the body
|
||||
|
||||
Reference in New Issue
Block a user