예제 #1
0
        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());
        }
예제 #2
0
        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);
        }