private async Task HandleMessageCreatedAsync(SocketMessage msg) { if (!(msg is SocketUserMessage message) || message.Author.IsBot) { return; } using (var dctx = new SparkyContext()) { var user = dctx.GetOrCreateUser(msg.Author.Id); if (DateTime.UtcNow.Subtract(user.LastMessageAt ?? DateTime.UtcNow.AddMinutes(-2)).TotalMinutes >= 1) { user.Points += 1; user.LastMessageAt = DateTime.UtcNow; } await dctx.SaveChangesAsync(); } var argPos = 0; if (message.HasStringPrefix(Configuration.Get <string>("prefix"), ref argPos) || message.HasMentionPrefix(_client.CurrentUser, ref argPos)) { var context = new SparkyCommandContext(_client, message, _services); await _commands.ExecuteAsync(context, argPos, _services, MultiMatchHandling.Best); } }
private async Task HandleMemberJoinedAsync(SocketGuildUser member) { using (var dctx = new SparkyContext()) { var user = dctx.GetOrCreateUser(member.Id); foreach (var roleId in user.Roles) { var role = member.Guild.Roles.FirstOrDefault(r => r.Id == roleId); if (role != null) { await member.AddRoleAsync(role); } } await dctx.SaveChangesAsync(); } }