mirror of
https://github.com/barelyprofessional/KfChatDotNet.git
synced 2026-05-02 04:22:04 -04:00
Added support for self destructing !chink images as well as pigcubes
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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";
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
Reference in New Issue
Block a user