1
0

Compare commits

...
This repository has been archived on 2023-08-03. You can view files and clone it, but cannot push or open issues or pull requests.

6 Commits

Author SHA1 Message Date
6e6f6dc75d Merge pull request 'fix filename' (#5) from feature/ci-cd into master
All checks were successful
continuous-integration/drone/push Build is passing
Reviewed-on: #5
2023-07-28 14:03:54 +00:00
f35288a33e Merge pull request 'try fix docker build' (#4) from feature/ci-cd into master
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #4
2023-07-28 14:02:36 +00:00
7fab914c78 Merge pull request 'try build' (#3) from feature/ci-cd into master
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #3
2023-07-28 13:54:05 +00:00
766097d9f6 Merge pull request 'try fix docker file' (#2) from feature/ci-cd into master
Some checks failed
continuous-integration/drone/push Build is failing
Reviewed-on: #2
2023-07-28 10:54:15 +00:00
a9c9a7779b Merge pull request 'feature/ci-cd' (#1) from feature/ci-cd into master
Some checks failed
continuous-integration/drone Build is failing
Reviewed-on: #1

First attempt at adding cicd
2023-07-28 10:44:31 +00:00
bcf72d68b9 add sequence command 2023-07-28 13:14:50 +08:00

View File

@ -1,19 +1,18 @@
using Discord.Commands;
using Discord.Commands.Builders;
using Newtonsoft.Json.Linq;
namespace Discord_Bot
{
public class ReminderModule : ModuleBase<SocketCommandContext>
{
private const long DAY_PERIOD = 24 * 60 * 60 * 1000; // 10 * 1000; //
private const long DAY_PERIOD = 24 * 60 * 60 * 1000; // 10 * 1000; //
private Timer reminderTimer;
protected override void OnModuleBuilding(CommandService commandService, ModuleBuilder builder)
[Command("reloadTimer")]
private async Task SetReloadTimer()
{
base.OnModuleBuilding(commandService, builder);
Console.WriteLine($"{DateTime.Now.TimeOfDay:hh\\:mm\\:ss} | hello world ");
ReloadTimers();
await ReplyAsync($"Заебись");
}
[Command("remindertime")]
@ -28,6 +27,7 @@ namespace Discord_Bot
private async Task SetSequence([Remainder]string message = "")
{
SaveToConfig("sequence", message);
SaveToConfig("sequenceIndex", "0");
await ReplyAsync($"Заебись");
}
@ -40,30 +40,87 @@ namespace Discord_Bot
private void ReloadTimers()
{
var time = Functions.GetConfigItem("reminderTime");
if (time.Type == JTokenType.Boolean)
return;
var nextReminder = Utility.ParseTime(time.ToString());
var reminder = GetReminderTime();
var now = DateTime.Now;
var span = (nextReminder - now).TotalMilliseconds;
var span = (reminder - now).TotalMilliseconds;
if (span < 0)
{
// skip to next day
nextReminder = nextReminder.AddDays(1);
span = (nextReminder - now).TotalMilliseconds;
// skip to next period
var d = (now - reminder).TotalMilliseconds + DAY_PERIOD;
reminder = reminder.AddMilliseconds(d);
span = (reminder - now).TotalMilliseconds;
}
reminderTimer = new Timer(SendReminder, "sd", (long)span, DAY_PERIOD);
RecalcSequenceIndex();
}
private DateTime GetReminderTime()
{
var time = Functions.GetConfigItem("reminderTime");
if (time.Type == JTokenType.Boolean)
return DateTime.Now;
return Utility.ParseTime(time.ToString());
}
private async void SendReminder(object? state)
{
//check sequence
if (!CheckSequenceAndIncrementIndex())
return;
var users = Functions.GetConfigItem("users").ToString();
await ReplyAsync($"{users}\nБудет чо?");
var message = $"{users}\nБудет чо? {DateTime.Now}";
await ReplyAsync(message);
}
private void RecalcSequenceIndex()
{
var reminder = GetReminderTime();
var now = DateTime.Now;
var sequence = GetSequence();
var span = (now - reminder).TotalMilliseconds;
var spanMinusFullSequences = (int)MathF.Floor((float)span % (DAY_PERIOD * sequence.Length));
var index = spanMinusFullSequences / DAY_PERIOD;
SaveToConfig("sequenceIndex", index.ToString());
}
private bool CheckSequenceAndIncrementIndex()
{
var sequenceIndex = GetSequenceIndex();
var sequence = GetSequence();
if (string.IsNullOrEmpty(sequence))
return true;
var result = sequence[sequenceIndex] == '!';
sequenceIndex = (sequenceIndex + 1) % sequence.Length;
SaveToConfig("sequenceIndex", sequenceIndex.ToString());
return result;
}
private int GetSequenceIndex()
{
var sequenceIndexToken = Functions.GetConfigItem("sequenceIndex");
if (sequenceIndexToken.Type == JTokenType.Boolean)
{
SaveToConfig("sequenceIndex", "0");
return 0;
}
return (int)sequenceIndexToken;
}
private string GetSequence()
{
var sequenceIndexToken = Functions.GetConfigItem("sequence");
if (sequenceIndexToken.Type == JTokenType.Boolean)
{
SaveToConfig("sequence", "");
return "";
}
return sequenceIndexToken.ToString();
}
private void SaveToConfig(string key, string data)