public async Task <RuntimeResult> ContactUser(IGuildUser user) { if (CommandHandler.FeatureFlagDisabled(FeatureFlag.MODMAIL)) { return(CustomResult.FromIgnored()); } var existing = ModMailManager.GetOpenModmailForUser(user); if (existing != null) { await Context.Channel.SendMessageAsync(embed : ModMailEmbedHandler.GetThreadAlreadyExistsEmbed(existing)); } else { await ModMailManager.ContactUser(user, Context.Channel, true); } return(CustomResult.FromSuccess()); }
public async Task ContactUser(IGuildUser user, ISocketMessageChannel channel) { using (var db = new Database()){ var exists = db.ModMailThreads.Where(th => th.UserId == user.Id && th.State != "CLOSED"); if (exists.Count() > 0) { await channel.SendMessageAsync(embed : ModMailEmbedHandler.GetThreadAlreadyExistsEmbed(exists.First())); return; } var existingUser = db.Users.Where(us => us.UserId == user.Id).FirstOrDefault(); if (existingUser == null) { var newUser = new User(); newUser.UserId = user.Id; newUser.ModMailMuted = false; db.Users.Add(newUser); } else { existingUser.ModMailMuted = false; } db.SaveChanges(); } var createdChannel = await CreateModMailThread(user); ModMailThread createdModMailThread; using (var db = new Database()){ createdModMailThread = db.ModMailThreads.Where(th => th.ChannelId == createdChannel.Id).First(); } var embedContainingLink = ModMailEmbedHandler.GetThreadHasBeendCreatedEmbed(createdModMailThread); await channel.SendMessageAsync(embed : embedContainingLink); }