diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts
index 9d9948506..e67c5b0d2 100644
--- a/src/api/util/handlers/Message.ts
+++ b/src/api/util/handlers/Message.ts
@@ -16,46 +16,45 @@
along with this program. If not, see .
*/
-import { randomString, fillMessageUrlEmbeds } from "@spacebar/api";
+import { fillMessageUrlEmbeds, randomString } from "@spacebar/api";
import {
Application,
Attachment,
Channel,
+ CloudAttachment,
Config,
+ DiscordApiErrors,
emitEvent,
EVERYONE_MENTION,
+ FieldErrors,
+ getDatabase,
getPermission,
getRights,
Guild,
+ handleFile,
HERE_MENTION,
+ Member,
Message,
MessageCreateEvent,
+ MessageFlags,
+ Permissions,
+ ReadState,
Role,
ROLE_MENTION,
- Sticker,
- User,
- //CHANNEL_MENTION,
- USER_MENTION,
- Webhook,
- handleFile,
- Permissions,
- DiscordApiErrors,
- CloudAttachment,
- ReadState,
- Member,
Session,
- MessageFlags,
- FieldErrors,
- getDatabase,
- ElapsedTime,
- TraceRoot,
+ Sticker,
Stopwatch,
TraceNode,
+ TraceRoot,
+ User,
+ USER_MENTION,
+ Webhook,
} from "@spacebar/util";
import { HTTPError } from "lambert-server";
-import { In, Or, Equal, IsNull } from "typeorm";
+import { Equal, In, Or } from "typeorm";
import {
ActionRowComponent,
+ BaseMessageComponents,
ButtonStyle,
ChannelType,
Embed,
@@ -64,14 +63,14 @@ import {
MessageCreateAttachment,
MessageCreateCloudAttachment,
MessageCreateSchema,
+ MessageReferenceType,
MessageType,
Reaction,
ReadStateType,
UnfurledMediaItem,
- BaseMessageComponents,
v1CompTypes,
- MessageReferenceType,
} from "@spacebar/schemas";
+
const allow_empty = false;
// TODO: check webhook, application, system author, stickers
// TODO: embed gifs/videos/images
@@ -770,6 +769,7 @@ async function handleMessageMentionsAsync(message: Message) {
const states = await ReadState.findBy({
user_id: In(ids),
channel_id: channel.id,
+ read_state_type: ReadStateType.CHANNEL,
});
const users = new Set(ids);
states.forEach((state) => users.delete(state.user_id));
@@ -806,9 +806,7 @@ async function handleMessageMentionsAsync(message: Message) {
await fillInMissingIDs((await Member.find({ where: { guild_id: channel.guild_id } })).map((m) => m.id));
}
const repository = ReadState.getRepository();
- const condition = { channel_id: channel.id, read_state_type: ReadStateType.CHANNEL };
- await repository.update({ ...condition, mention_count: IsNull() }, { mention_count: 0 });
- await repository.increment(condition, "mention_count", 1);
+ await repository.increment({ channel_id: channel.id, read_state_type: ReadStateType.CHANNEL }, "mention_count", 1);
trace.calls.push("mentionEveryone", { micros: sw.getElapsedAndReset().totalMicroseconds });
} else {
const users = new Set([