Ignore conversation summaries which don't involve BMJ

This commit is contained in:
barelyprofessional
2025-09-16 21:28:54 -05:00
parent 15de60e60b
commit 588a0e95fa
3 changed files with 24 additions and 1 deletions

View File

@@ -741,7 +741,16 @@ public class BotServices
private void DiscordOnConversationSummaryUpdate(object sender, DiscordConversationSummaryUpdateModel summary, string guildId) private void DiscordOnConversationSummaryUpdate(object sender, DiscordConversationSummaryUpdateModel summary, string guildId)
{ {
_logger.Info($"Received a conversation summary update for guild {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); _chatBot.SendChatMessage($"[img]{discordIcon.Value}[/img] {summary.Topic}: {summary.SummaryShort} 🤖🤖", true);
} }

View File

@@ -316,6 +316,11 @@ public class DiscordConversationSummaryUpdateModel
public required string Topic { get; set; } public required string Topic { get; set; }
[JsonPropertyName("summ_short")] [JsonPropertyName("summ_short")]
public required string SummaryShort { get; set; } public required string SummaryShort { get; set; }
/// <summary>
/// List of Discord IDs for people whose messages were used to generate the summary
/// </summary>
[JsonPropertyName("people")]
public required List<string> People { get; set; }
} }
// https://discord.com/developers/docs/resources/channel#channel-object-channel-types // https://discord.com/developers/docs/resources/channel#channel-object-channel-types

View File

@@ -1068,6 +1068,14 @@ public static class BuiltIn
Description = "Working directory for BMJ's Twitch streams captured with streamlink", Description = "Working directory for BMJ's Twitch streams captured with streamlink",
Default = "/root/twitch/", Default = "/root/twitch/",
ValueType = SettingValueType.Text 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 BotRateLimitCooldownAutoDeleteDelay = "Bot.RateLimit.CooldownAutoDeleteDelay";
public static string BotRateLimitExpiredEntryCleanupInterval = "Bot.RateLimit.ExpiredEntryCleanupInterval"; public static string BotRateLimitExpiredEntryCleanupInterval = "Bot.RateLimit.ExpiredEntryCleanupInterval";
public static string CaptureStreamlinkBmjWorkingDirectory = "Bot.Streamlink.BmjWorkingDirectory"; public static string CaptureStreamlinkBmjWorkingDirectory = "Bot.Streamlink.BmjWorkingDirectory";
public static string DiscordOnlySendSummariesIncludingBmj = "Discord.OnlySendSummariesIncludingBmj";
} }
} }