public void Initialize() { IEnumerable <SchedulerEntry> dbSchedules = _database.Db.Schedules.Values; SchedulerEntry[] missedSchedules = dbSchedules.Where(entry => entry.Time <= DateTime.Now).ToArray(); SchedulerEntry[] futureSchedules = dbSchedules.Where(entry => entry.Time > DateTime.Now).ToArray(); _database.Db.Schedules.Clear(); foreach (SchedulerEntry entry in missedSchedules) { OnDone(entry.CallData, null); } foreach (SchedulerEntry entry in futureSchedules) { Add(entry.Time, entry.CallData, false); } _database.WriteData(); }
public async Task InitializeAsync() { if (m_client == null) { m_logger.LogWarning($"[{nameof(MessageRewardService)}] m_client is null, ignoring"); return; } m_client.MessageReceived += async(SocketMessage msg) => { SocketUserMessage message = msg as SocketUserMessage; int argPos = 0; if (!(message.HasStringPrefix(m_config.Configuration.Prefix, ref argPos, StringComparison.OrdinalIgnoreCase) || message.HasMentionPrefix(m_client.CurrentUser, ref argPos) || message.Author.IsBot)) { //DatabaseUserEntry userDB = m_db.GetUserEntry((message.Channel as SocketGuildChannel).Guild.Id, message.Author.Id); DatabaseUserEntry userDB = m_db.GetUserEntry(0, message.Author.Id); IUser user = message.Author; userDB.Coins++; uint oldLevel = userDB.Level; userDB.Xp += (uint)Math.Log(message.Content.Length + 1); uint newLevel = userDB.Level; if (oldLevel != newLevel) { uint oldCoins = userDB.Coins; uint awardedCoins = (uint)Math.Pow(userDB.Level / 2f, 4f); userDB.Coins += awardedCoins; Embed embed = new EmbedBuilder() .WithColor(0xFF1288) .WithThumbnailUrl(Emotes.BelfastHappy.Url) .WithAuthor(author => { author .WithName($"Profile of {message.Author.Username}") .WithIconUrl($"{message.Author.GetAvatarUrl()}"); }) .WithTitle($"{user.Username} Leveled Up! ▲") .AddField("Details", $"► Level: **{oldLevel}** => **{userDB.Level}**\n" + $"► Coins: **{oldCoins}** => **{userDB.Coins}** {Emotes.DiscordCoin} (**+{awardedCoins}**{Emotes.DiscordCoin})") .Build(); m_db.WriteData(); //await message.Channel.SendMessageAsync(embed: embed); } } await Task.CompletedTask; }; await Task.CompletedTask; }
//Might do something fancier later public async Task HandleCommandAsync(string message) { string command; string arguments; int firstSpaceIndex = message.IndexOf(' '); if (firstSpaceIndex == -1) { command = message; arguments = string.Empty; } else { command = message.Substring(0, firstSpaceIndex); arguments = message.Substring(firstSpaceIndex + 1); } switch (command) { case "stop": case "kill": m_Belfast.Stop(); break; case "db": switch (arguments.Split(' ')[0]) { case "write": m_database.WriteData(); break; } break; default: m_logger.Log(false, LogLevel.Critical, "No such command as '{0}'", command); break; } await Task.CompletedTask; }