Skip to content

Commit

Permalink
Merge pull request #305 from rGunti/bugfix/timer-messages-not-working
Browse files Browse the repository at this point in the history
Fixed a bug that caused timer messages to be sent to all Twitch channels
  • Loading branch information
rGunti authored Aug 8, 2024
2 parents 7eab03f + ebd180a commit 09ac707
Show file tree
Hide file tree
Showing 5 changed files with 48 additions and 0 deletions.
10 changes: 10 additions & 0 deletions src/FloppyBot.Chat.Agent/ChatAgent.cs
Original file line number Diff line number Diff line change
Expand Up @@ -69,6 +69,16 @@ private void OnMessageReceived(IChatInterface sourceInterface, ChatMessage chatM
private void OnReplyReceived(ChatMessage message)
{
_logger.LogTrace("Received reply message {@Message}", message);
if (!_chatInterface.CanHandleMessageAsResponse(message))
{
_logger.LogDebug(
"Received reply message that cannot be handled by {ChatInterface} (Message Identifier={@MessageIdentifier})",
_chatInterface.Name,
message.Identifier
);
return;
}

_chatInterface.SendMessage(message.Identifier, message.Content);
}
}
25 changes: 25 additions & 0 deletions src/FloppyBot.Chat.Twitch/TwitchChatInterface.cs
Original file line number Diff line number Diff line change
Expand Up @@ -88,12 +88,32 @@ public void Disconnect()

public void SendMessage(ChatMessageIdentifier referenceMessage, string message)
{
if (referenceMessage.IsNewMessage)
{
_logger.LogDebug("Message is not linked to a request, sending it as a new one instead");
SendMessage(referenceMessage.GetChannel(), message);
return;
}

_logger.LogTrace(
"Sending reply message to channel {TwitchChannel} referring to message {ReplyMessageId}: {ChatMessage}",
referenceMessage.Channel,
referenceMessage.ToString(),
message
);
LineSplitter(
message,
line => _client.SendReply(referenceMessage.Channel, referenceMessage.MessageId, line)
);
}

public bool CanHandleMessageAsResponse(ChatMessage message)
{
var msgIdentifier = message.Identifier;
return msgIdentifier.Interface == IF_NAME
&& msgIdentifier.Channel == _configuration.Channel;
}

public event ChatMessageReceivedDelegate? MessageReceived;

public void Dispose()
Expand All @@ -110,6 +130,11 @@ public void SendMessage(string message)
public void SendMessage(ChannelIdentifier channel, string message)
{
var twitchChannel = channel.Channel.ToLowerInvariant();
_logger.LogTrace(
"Sending message to channel {TwitchChannel}: {ChatMessage}",
twitchChannel,
message
);
LineSplitter(message, line => _client.SendMessage(twitchChannel, line));
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,8 @@ public record ChatMessageIdentifier(string Interface, string Channel, string Mes
{
public const string NEW_MESSAGE_ID = "new";

public bool IsNewMessage => MessageId == NEW_MESSAGE_ID;

public static implicit operator string(ChatMessageIdentifier identifier) =>
identifier.ToString();

Expand Down
6 changes: 6 additions & 0 deletions src/FloppyBot.Chat/IChatInterface.cs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
using FloppyBot.Chat.Entities;
using FloppyBot.Chat.Entities.Identifiers;

namespace FloppyBot.Chat;
Expand All @@ -12,5 +13,10 @@ public interface IChatInterface : IDisposable

void SendMessage(ChatMessageIdentifier referenceMessage, string message);

bool CanHandleMessageAsResponse(ChatMessage message)
{
return message.Identifier.Interface == Name;
}

event ChatMessageReceivedDelegate MessageReceived;
}
5 changes: 5 additions & 0 deletions src/FloppyBot.Chat/Mock/MockChatInterface.cs
Original file line number Diff line number Diff line change
Expand Up @@ -54,6 +54,11 @@ public void SendMessage(ChatMessageIdentifier _, string message)
SendMessage(message);
}

public bool CanHandleMessageAsResponse(ChatMessage message)
{
return true;
}

public event ChatMessageReceivedDelegate? MessageReceived;

public void Dispose()
Expand Down

0 comments on commit 09ac707

Please sign in to comment.