Added support for self destructing !chink images as well as pigcubes

This commit is contained in:
barelyprofessional
2025-09-03 15:34:48 -05:00
parent a7739278c7
commit b26807c298
2 changed files with 40 additions and 9 deletions

View File

@@ -150,7 +150,8 @@ public class GetRandomImage : ICommand
var settings = await SettingsProvider.GetMultipleValuesAsync([ var settings = await SettingsProvider.GetMultipleValuesAsync([
BuiltIn.Keys.BotImageRandomSliceDivideBy, BuiltIn.Keys.BotImagePigCubeSelfDestruct, BuiltIn.Keys.BotImageRandomSliceDivideBy, BuiltIn.Keys.BotImagePigCubeSelfDestruct,
BuiltIn.Keys.BotImageInvertedCubeUrl, BuiltIn.Keys.BotImagePigCubeSelfDestructMin, BuiltIn.Keys.BotImageInvertedCubeUrl, BuiltIn.Keys.BotImagePigCubeSelfDestructMin,
BuiltIn.Keys.BotImagePigCubeSelfDestructMax, BuiltIn.Keys.BotImageInvertedPigCubeSelfDestructDelay BuiltIn.Keys.BotImagePigCubeSelfDestructMax, BuiltIn.Keys.BotImageInvertedPigCubeSelfDestructDelay,
BuiltIn.Keys.BotImageChinkSelfDestruct, BuiltIn.Keys.BotImageChinkSelfDestructDelay
]); ]);
var divideBy = settings[BuiltIn.Keys.BotImageRandomSliceDivideBy].ToType<int>(); var divideBy = settings[BuiltIn.Keys.BotImageRandomSliceDivideBy].ToType<int>();
var limit = 1; var limit = 1;
@@ -168,7 +169,23 @@ public class GetRandomImage : ICommand
db.Images.Update(image); db.Images.Update(image);
await db.SaveChangesAsync(ctx); await db.SaveChangesAsync(ctx);
var msg = await botInstance.SendChatMessageAsync($"[img]{image.Url}[/img]", true); var msg = await botInstance.SendChatMessageAsync($"[img]{image.Url}[/img]", true);
if (key != "pigcube" || !settings[BuiltIn.Keys.BotImagePigCubeSelfDestruct].ToBoolean()) return; int timeToDeletionMsec;
if (key == "pigcube" && settings[BuiltIn.Keys.BotImagePigCubeSelfDestruct].ToBoolean())
{
timeToDeletionMsec = image.Url == settings[BuiltIn.Keys.BotImageInvertedCubeUrl].Value
? settings[BuiltIn.Keys.BotImageInvertedPigCubeSelfDestructDelay].ToType<int>()
: new Random().Next(settings[BuiltIn.Keys.BotImagePigCubeSelfDestructMin].ToType<int>(),
settings[BuiltIn.Keys.BotImagePigCubeSelfDestructMax].ToType<int>());
}
else if (key == "chink" && settings[BuiltIn.Keys.BotImageChinkSelfDestruct].ToBoolean())
{
timeToDeletionMsec = settings[BuiltIn.Keys.BotImageChinkSelfDestructDelay].ToType<int>();
}
else
{
return;
}
while (msg.Status is SentMessageTrackerStatus.WaitingForResponse or SentMessageTrackerStatus.ChatDisconnected) while (msg.Status is SentMessageTrackerStatus.WaitingForResponse or SentMessageTrackerStatus.ChatDisconnected)
{ {
await Task.Delay(500, ctx); await Task.Delay(500, ctx);
@@ -176,21 +193,17 @@ public class GetRandomImage : ICommand
if (msg.Status is SentMessageTrackerStatus.Lost or SentMessageTrackerStatus.NotSending) if (msg.Status is SentMessageTrackerStatus.Lost or SentMessageTrackerStatus.NotSending)
{ {
logger.Error("Pig cube got lost"); logger.Error("Image got lost");
return; return;
} }
if (msg.ChatMessageId == null) if (msg.ChatMessageId == null)
{ {
logger.Error($"Pig cube chat message ID was null even though status was {msg.Status}"); logger.Error($"Image chat message ID was null even though status was {msg.Status}");
return; return;
} }
var timeToDeletionMsec = image.Url == settings[BuiltIn.Keys.BotImageInvertedCubeUrl].Value logger.Info($"Deleting image in {timeToDeletionMsec}ms");
? settings[BuiltIn.Keys.BotImageInvertedPigCubeSelfDestructDelay].ToType<int>()
: new Random().Next(settings[BuiltIn.Keys.BotImagePigCubeSelfDestructMin].ToType<int>(),
settings[BuiltIn.Keys.BotImagePigCubeSelfDestructMax].ToType<int>());
logger.Info($"Deleting pig cube in {timeToDeletionMsec}ms");
await Task.Delay(timeToDeletionMsec, ctx); await Task.Delay(timeToDeletionMsec, ctx);
await botInstance.KfClient.DeleteMessageAsync(msg.ChatMessageId.Value); await botInstance.KfClient.DeleteMessageAsync(msg.ChatMessageId.Value);
} }

View File

@@ -1023,6 +1023,22 @@ public static class BuiltIn
ValueType = SettingValueType.Text, ValueType = SettingValueType.Text,
Regex = WholeNumberRegex Regex = WholeNumberRegex
}, },
new BuiltInSettingsModel
{
Key = Keys.BotImageChinkSelfDestruct,
Description = "Whether the chink photo should self destruct after being sent",
Default = "true",
ValueType = SettingValueType.Boolean,
Regex = BooleanRegex
},
new BuiltInSettingsModel
{
Key = Keys.BotImageChinkSelfDestructDelay,
Description = "Delay in milliseconds before destroying the chink image",
Default = "7500",
ValueType = SettingValueType.Text,
Regex = WholeNumberRegex
}
]; ];
public static class Keys public static class Keys
@@ -1139,5 +1155,7 @@ public static class BuiltIn
public static string MoneyRakebackMinimumAmount = "Money.Rakeback.MinimumAmount"; public static string MoneyRakebackMinimumAmount = "Money.Rakeback.MinimumAmount";
public static string MoneyLossbackPercentage = "Money.Lossback.Percentage"; public static string MoneyLossbackPercentage = "Money.Lossback.Percentage";
public static string MoneyLossbackMinimumAmount = "Money.Lossback.MinimumAmount"; public static string MoneyLossbackMinimumAmount = "Money.Lossback.MinimumAmount";
public static string BotImageChinkSelfDestruct = "Bot.Image.ChinkSelfDestruct";
public static string BotImageChinkSelfDestructDelay = "Bot.Image.ChinkSelfDestructDelay";
} }
} }