コード例 #1
0
        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();
        }
コード例 #2
0
        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;
        }
コード例 #3
0
        //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;
        }