diff --git a/.editorconfig b/.editorconfig
index 44bd9862..f744ff8b 100644
--- a/.editorconfig
+++ b/.editorconfig
@@ -3,6 +3,10 @@ root = true
[*.{cs,csx}]
insert_final_newline = true
+# Allow one-liner if-returns
+dotnet_diagnostic.SA1503.severity = none
+dotnet_diagnostic.SA1137.severity = error
+
# Namespace must match folder structure
dotnet_diagnostic.IDE0130.severity = none
diff --git a/cicd/template.yml b/cicd/template.yml
index 465511d9..62abd030 100644
--- a/cicd/template.yml
+++ b/cicd/template.yml
@@ -231,8 +231,8 @@ Resources:
TaskDefinition:
Type: AWS::ECS::TaskDefinition
Properties:
- Cpu: "512"
- Memory: "1024"
+ Cpu: "256"
+ Memory: "512"
Family: !Ref AWS::StackName
NetworkMode: awsvpc
ExecutionRoleArn: !GetAtt TaskRole.Arn
diff --git a/src/Adapter/Events/Controllers/MessageCreateEventController.cs b/src/Adapter/Events/Controllers/MessageCreateEventController.cs
index 2463dedb..10429012 100644
--- a/src/Adapter/Events/Controllers/MessageCreateEventController.cs
+++ b/src/Adapter/Events/Controllers/MessageCreateEventController.cs
@@ -16,6 +16,8 @@
using Microsoft.Extensions.Logging;
using Microsoft.Extensions.Options;
+#pragma warning disable IDE0011 // Relax required braces
+
namespace Brighid.Discord.Adapter.Events
{
///
@@ -78,6 +80,7 @@ public async Task Handle(MessageCreateEvent @event, CancellationToken cancellati
{
cancellationToken.ThrowIfCancellationRequested();
gateway.ThrowIfNotReady();
+ if (@event.IsBotMessage) return;
using var trace = tracingService.StartTrace();
using var scope = logger.BeginScope("{@Event} {@TraceId}", nameof(MessageCreateEvent), trace.Id);
diff --git a/src/Adapter/Events/Events/MessageCreateEvent.cs b/src/Adapter/Events/Events/MessageCreateEvent.cs
index e4fc7298..a38102d4 100644
--- a/src/Adapter/Events/Events/MessageCreateEvent.cs
+++ b/src/Adapter/Events/Events/MessageCreateEvent.cs
@@ -15,5 +15,10 @@ public struct MessageCreateEvent : IGatewayEvent, IMessageEvent
/// Gets or sets the event message.
///
public Message Message { get; set; }
+
+ ///
+ /// Gets a value indicating whether the message originates from a bot user or not.
+ ///
+ public bool IsBotMessage => Message.Author.IsBot ?? false;
}
}
diff --git a/tests/Adapter/Events/Controllers/MessageCreateEventControllerTests.cs b/tests/Adapter/Events/Controllers/MessageCreateEventControllerTests.cs
index f45e60a5..eb715347 100644
--- a/tests/Adapter/Events/Controllers/MessageCreateEventControllerTests.cs
+++ b/tests/Adapter/Events/Controllers/MessageCreateEventControllerTests.cs
@@ -69,6 +69,27 @@ public class HandleTests
gateway.Received().ThrowIfNotReady();
}
+ [Test, Auto]
+ public async Task ShouldDoNothingIfMessageWasFromABot(
+ string content,
+ [Frozen, Substitute] IGatewayService gateway,
+ [Frozen, Substitute] ITracingService tracing,
+ [Frozen, Substitute] IMessageEmitter emitter,
+ [Frozen, Substitute] IUserService userService,
+ [Target] MessageCreateEventController controller
+ )
+ {
+ var cancellationToken = new CancellationToken(false);
+ var message = new Message { Content = content, Author = new User { IsBot = true } };
+ var @event = new MessageCreateEvent { Message = message };
+
+ await controller.Handle(@event, cancellationToken);
+
+ tracing.DidNotReceive().StartTrace();
+ await emitter.DidNotReceive().Emit(Any(), Any(), Any());
+ await userService.DidNotReceive().IsUserRegistered(Any(), Any());
+ }
+
[Test, Auto]
public async Task ShouldStartAndStopATraceWithMessageAndEventAnnotations(
string content,