summary refs log tree commit diff
diff options
context:
space:
mode:
authorRory& <root@rory.gay>2026-06-28 00:54:05 +0200
committerRory& <root@rory.gay>2026-06-28 00:54:05 +0200
commit673d99051dbcc8ca7f5bbe82c2a86c7e5bf57a33 (patch)
treeb675519b72e6080af2b687497053b3408e3e1c61
parentrefactor: add poll utility (diff)
downloadserver-ts-673d99051dbcc8ca7f5bbe82c2a86c7e5bf57a33.tar.xz
Guard embedless messages when checking for poll results, add reply tests
-rw-r--r--extra/admin-api/Spacebar.UApi/Controllers/Auth/GuildMembersController.cs0
-rw-r--r--extra/admin-api/Tests/Spacebar.Tests/Tests/MessageTests.cs39
-rw-r--r--extra/admin-api/Tests/Spacebar.Tests/Tests/PollTests.cs0
-rw-r--r--src/api/util/handlers/Message.ts2
4 files changed, 40 insertions, 1 deletions
diff --git a/extra/admin-api/Spacebar.UApi/Controllers/Auth/GuildMembersController.cs b/extra/admin-api/Spacebar.UApi/Controllers/Auth/GuildMembersController.cs
new file mode 100644

index 00000000..e69de29b --- /dev/null +++ b/extra/admin-api/Spacebar.UApi/Controllers/Auth/GuildMembersController.cs
diff --git a/extra/admin-api/Tests/Spacebar.Tests/Tests/MessageTests.cs b/extra/admin-api/Tests/Spacebar.Tests/Tests/MessageTests.cs
index 334572f0..d563b244 100644 --- a/extra/admin-api/Tests/Spacebar.Tests/Tests/MessageTests.cs +++ b/extra/admin-api/Tests/Spacebar.Tests/Tests/MessageTests.cs
@@ -53,6 +53,45 @@ public class MessageTests(ITestOutputHelper testOutputHelper, TestFixture fixtur } [Fact] + public async Task SendMessageReply() { + var r = await Assert.HttpSuccess(await Client.ApiHttpClient.PostAsJsonAsync($"channels/{Channel.Id}/messages", new JsonObject() { + { "content", "meow" } + }, cancellationToken: TestContext.Current.CancellationToken)); + var msg = await r.Content.ReadFromJsonAsync<Message>(); + await Assert.HttpSuccess(await Client.ApiHttpClient.PostAsJsonAsync($"channels/{Channel.Id}/messages", new JsonObject() { + { "content", "meow" }, { + "message_reference", new JsonObject() { + { "guild_id", msg.GuildId.Value.ToString() }, + { "channel_id", msg.ChannelId.Value.ToString() }, + { "message_id", msg.Id.ToString() }, + } + } + }, cancellationToken: TestContext.Current.CancellationToken)); + } + + [Fact] + public async Task SendMessageReplyAllowedMentions() { + var r = await Assert.HttpSuccess(await Client.ApiHttpClient.PostAsJsonAsync($"channels/{Channel.Id}/messages", new JsonObject() { + { "content", "meow" } + }, cancellationToken: TestContext.Current.CancellationToken)); + var msg = await r.Content.ReadFromJsonAsync<Message>(); + await Assert.HttpSuccess(await Client.ApiHttpClient.PostAsJsonAsync($"channels/{Channel.Id}/messages", new JsonObject() { + { "content", "meow" }, { + "message_reference", new JsonObject() { + { "guild_id", msg.GuildId.Value.ToString() }, + { "channel_id", msg.ChannelId.Value.ToString() }, + { "message_id", msg.Id.ToString() }, + } + }, { + "allowed_mentions", new JsonObject() { + { "parse", new JsonArray("users", "roles", "everyone") }, + { "replied_user", false } + } + } + }, cancellationToken: TestContext.Current.CancellationToken)); + } + + [Fact] public async Task SendMessageMultipart() { var content = new MultipartFormDataContent(); content.Add(JsonContent.Create(new JsonObject() { diff --git a/extra/admin-api/Tests/Spacebar.Tests/Tests/PollTests.cs b/extra/admin-api/Tests/Spacebar.Tests/Tests/PollTests.cs new file mode 100644
index 00000000..e69de29b --- /dev/null +++ b/extra/admin-api/Tests/Spacebar.Tests/Tests/PollTests.cs
diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts
index d3ce0da7..78bab924 100644 --- a/src/api/util/handlers/Message.ts +++ b/src/api/util/handlers/Message.ts
@@ -768,7 +768,7 @@ async function handleMessageMentionsAsync(message: Message) { ); } - if (message.embeds[0].type === EmbedType.poll_result) { + if (message.embeds[0]?.type === EmbedType.poll_result) { message.mentions.push( // @ts-expect-error it does not like the .toPublicUser() lol (await User.findOne({ where: { id: message.author_id } }))!.toPublicUser(),