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 000000000..e69de29bb diff --git a/extra/admin-api/Tests/Spacebar.Tests/Tests/MessageTests.cs b/extra/admin-api/Tests/Spacebar.Tests/Tests/MessageTests.cs index 334572f0a..d563b244a 100644 --- a/extra/admin-api/Tests/Spacebar.Tests/Tests/MessageTests.cs +++ b/extra/admin-api/Tests/Spacebar.Tests/Tests/MessageTests.cs @@ -52,6 +52,45 @@ public class MessageTests(ITestOutputHelper testOutputHelper, TestFixture fixtur }, cancellationToken: TestContext.Current.CancellationToken)); } + [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(); + 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(); + 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(); 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 000000000..e69de29bb diff --git a/src/api/util/handlers/Message.ts b/src/api/util/handlers/Message.ts index d3ce0da7d..78bab924d 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(),