diff --git a/KfChatDotNetBot/Services/BotServices.cs b/KfChatDotNetBot/Services/BotServices.cs index 25e5d68..854a1ba 100644 --- a/KfChatDotNetBot/Services/BotServices.cs +++ b/KfChatDotNetBot/Services/BotServices.cs @@ -741,7 +741,16 @@ public class BotServices private void DiscordOnConversationSummaryUpdate(object sender, DiscordConversationSummaryUpdateModel summary, string guildId) { _logger.Info($"Received a conversation summary update for guild {guildId}"); - var discordIcon = SettingsProvider.GetValueAsync(BuiltIn.Keys.DiscordIcon).Result; + var settings = SettingsProvider.GetMultipleValuesAsync([ + BuiltIn.Keys.DiscordIcon, BuiltIn.Keys.DiscordBmjId, BuiltIn.Keys.DiscordOnlySendSummariesIncludingBmj + ]).Result; + var discordIcon = settings[BuiltIn.Keys.DiscordIcon]; + if (settings[BuiltIn.Keys.DiscordOnlySendSummariesIncludingBmj].ToBoolean() && + !summary.People.Contains(settings[BuiltIn.Keys.DiscordBmjId].Value ?? string.Empty)) + { + _logger.Info($"Ignoring as BMJ's Discord ID '{settings[BuiltIn.Keys.DiscordBmjId].Value}' wasn't among the people listed for this conversation summary: {string.Join(", ", summary.People)}"); + return; + } _chatBot.SendChatMessage($"[img]{discordIcon.Value}[/img] {summary.Topic}: {summary.SummaryShort} 🤖🤖", true); } diff --git a/KfChatDotNetBot/Services/Discord.cs b/KfChatDotNetBot/Services/Discord.cs index 5497adf..f4d14d4 100644 --- a/KfChatDotNetBot/Services/Discord.cs +++ b/KfChatDotNetBot/Services/Discord.cs @@ -316,6 +316,11 @@ public class DiscordConversationSummaryUpdateModel public required string Topic { get; set; } [JsonPropertyName("summ_short")] public required string SummaryShort { get; set; } + /// + /// List of Discord IDs for people whose messages were used to generate the summary + /// + [JsonPropertyName("people")] + public required List People { get; set; } } // https://discord.com/developers/docs/resources/channel#channel-object-channel-types diff --git a/KfChatDotNetBot/Settings/BuiltIn.cs b/KfChatDotNetBot/Settings/BuiltIn.cs index 00a3fee..16a09dc 100644 --- a/KfChatDotNetBot/Settings/BuiltIn.cs +++ b/KfChatDotNetBot/Settings/BuiltIn.cs @@ -1068,6 +1068,14 @@ public static class BuiltIn Description = "Working directory for BMJ's Twitch streams captured with streamlink", Default = "/root/twitch/", ValueType = SettingValueType.Text + }, + new BuiltInSettingsModel + { + Key = Keys.DiscordOnlySendSummariesIncludingBmj, + Description = "Only send Discord conversation summaries to the chat where BMJ's Discord ID is listed as participating", + Default = "true", + ValueType = SettingValueType.Boolean, + Regex = BooleanRegex } ]; @@ -1191,5 +1199,6 @@ public static class BuiltIn public static string BotRateLimitCooldownAutoDeleteDelay = "Bot.RateLimit.CooldownAutoDeleteDelay"; public static string BotRateLimitExpiredEntryCleanupInterval = "Bot.RateLimit.ExpiredEntryCleanupInterval"; public static string CaptureStreamlinkBmjWorkingDirectory = "Bot.Streamlink.BmjWorkingDirectory"; + public static string DiscordOnlySendSummariesIncludingBmj = "Discord.OnlySendSummariesIncludingBmj"; } } \ No newline at end of file