Example #1
0
        public async Task BanUserAsync(CommandContext ctx, DiscordMember user, [RemainingText] string reason)
        {
            // !ban @Garcia is bad at everything <---- There for epicness
            var caseId = await produceID(20);

            if (!CheckInteraction.CanModerate(ctx.Member, (DiscordMember)user))
            {
                await ctx.Message.DeleteAsync();

                return;
            }
            if (user == ctx.Member)
            {
                await ctx.Channel.SendMessageAsync("You cannot ban yourself.");

                return;
            }
            try
            {
                var x = await user.CreateDmChannelAsync();

                await x.SendBanDMAsync("You were banned", $"You were banned from **{ ctx.Guild.Name}**\n** Reason**: { reason}\nID: `{ caseId}`\nTo appeal, fill out the form ");
            }
            catch (Exception)
            {
                Console.WriteLine("Unable to DM user.");
            }
            var e = new DiscordEmbedBuilder()
                    .WithDescription($"{user.Mention} was **banned** from the server with ID: `{caseId}`")
                    .WithColor(DiscordColor.Green);
            var message = await ctx.Channel.SendMessageAsync(embed : e.Build());

            await ctx.Guild.BanMemberAsync(user, 7, reason);
        }
Example #2
0
        public async Task KickUserAsync(CommandContext ctx, DiscordMember user, [RemainingText] string reason)
        {
            if (!CheckInteraction.CanModerate(ctx.Member, user))
            {
                await ctx.Message.DeleteAsync().ConfigureAwait(false);

                return;
            }
            var caseId = await produceID(20);

            var e = new DiscordEmbedBuilder()
                    .WithDescription($"{user.Mention} was **kicked** from the server with ID: {caseId}")
                    .WithColor(DiscordColor.Green);
            await ctx.Channel.SendMessageAsync(embed : e.Build());

            await user.RemoveAsync(reason).ConfigureAwait(false);
        }
Example #3
0
        public async Task WarnUserAsync(CommandContext ctx, DiscordMember user, [RemainingText] string reason)
        {
            if (!CheckInteraction.CanModerate(ctx.Member, user))
            {
                await ctx.Message.DeleteAsync();

                return;
            }
            var caseId = await produceID(20);

            await user.CreateDmChannelAsync();

            var l = new DiscordEmbedBuilder()
                    .WithTitle("You were warned.")
                    .WithColor(DiscordColor.Gold)
                    .WithDescription($"You were warned in **{ctx.Guild.Name}**\n\nYou were warned for reason: {reason}\nID `{caseId}`.\n**Moderator** | Hidden");

            try
            {
                await user.CreateDmChannelAsync();

                await user.SendMessageAsync(embed : l.Build());
            }
            catch (Exception)
            {
                Console.WriteLine("Unable to Dm user.");
            }
            var k = new DiscordEmbedBuilder()
                    .WithDescription($"{user.Mention} was **warned** with ID: `{caseId}`.\n**{user.Mention}**, check your DM's for information.")
                    .WithColor(DiscordColor.Green);
            await ctx.Channel.SendMessageAsync(embed : k.Build());

            // If the user has no warns, we make a new user.
            if (data.serverdata.warnedusers is null)
            {
                data.serverdata.warnedusers = new warneduser[1] {
                    new warneduser {
                        userId = user.Id, reasons = new string[] { reason }, caseId = new string[] { caseId }
                    }
                };
            }
            // If the user exists in the file, then we execute the command in the if statement.
            else
            {
                // Set the done variable, which defines if the user has been put into the file.
                bool done = false;
                // For each warned usr, we set their old reasons.
                foreach (warneduser u in data.serverdata.warnedusers)
                {
                    // If the warned user is equal to the warned user's ID
                    if (u.userId == user.Id)
                    {
                        // Set the old reasons
                        string[] oldReasons = u.reasons;
                        u.reasons = new string[oldReasons.Length + 1];
                        // Set the reasons to be old reasons
                        for (int i = 0; i < oldReasons.Length; i++)
                        {
                            u.reasons[i] = oldReasons[i];
                        }
                        // Do the same thing, but with case id's
                        string[] oldcaseid = u.caseId;
                        u.caseId = new string[oldcaseid.Length + 1];
                        for (int i = 0; i < oldcaseid.Length; i++)
                        {
                            u.caseId[i] = oldcaseid[i];
                        }
                        u.caseId[oldcaseid.Length]   = caseId;
                        u.reasons[oldReasons.Length] = reason;
                        // After adding them, we call this done.
                        done = true;
                        break;
                    }
                }
                // If done is false
                if (!done)
                {
                    // We get the previously warned users.
                    warneduser[] prevUsers = data.serverdata.warnedusers;
                    data.serverdata.warnedusers = new warneduser[prevUsers.Length + 1];
                    for (int i = 0; i < prevUsers.Length; i++)
                    {
                        data.serverdata.warnedusers[i] = prevUsers[i];
                    }
                    data.serverdata.warnedusers[prevUsers.Length] = new warneduser {
                        userId = user.Id, reasons = new string[] { reason }, caseId = new string[] { caseId }
                    };
                }
            }
            warneduser user2 = null;

            // Make sure that the previously warned user is not the same user
            foreach (warneduser user3 in data.serverdata.warnedusers)
            {
                if (user3.userId == user.Id)
                {
                    user2 = user3;
                }
            }
        }
Example #4
0
        public async Task BanUserTempAsync(CommandContext ctx, DiscordMember user, string duration, [RemainingText] string reason)
        {
            if (!CheckInteraction.CanModerate(ctx.Member, user))
            {
                await ctx.Message.DeleteAsync();

                return;
            }
            var caseId = await produceID(20);

            char minute   = 'm';
            char day      = 'd';
            char hour     = 'h';
            char second   = 's';
            char week     = 'w';
            var  BanTimer = new string(duration.Where(char.IsDigit).ToArray());

            if (minute.ToString().Any(duration.Contains) && day.ToString().Any(duration.Contains) && hour.ToString().Any(duration.Contains) && second.ToString().Any(duration.Contains))
            {
                await ctx.Channel.SendMessageAsync("You cannot pass multiple time formats.");

                return;
            }
            if (BanTimer.Length == 0)
            {
                return;
            }
            var Timer = Convert.ToInt32(BanTimer);

            if (minute.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Bans.Add(new Ban {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromMinutes(Timer)
                });
            }
            else if (day.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Bans.Add(new Ban {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromDays(Timer)
                });
            }
            else if (second.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Bans.Add(new Ban {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromSeconds(Timer)
                });
            }
            else if (hour.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Bans.Add(new Ban {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromHours(Timer)
                });
            }
            else if (week.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Bans.Add(new Ban {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromDays(Timer * 7)
                });
            }
            else
            {
                Console.WriteLine("");
            }
            var e = new DiscordEmbedBuilder()
                    .WithDescription($"{user.Mention} was **banned*8 from the server with ID: `{caseId}`")
                    .WithColor(DiscordColor.Green);
            var message = await ctx.Channel.SendMessageAsync(embed : e.Build());

            try
            {
                var x = await user.CreateDmChannelAsync();

                await x.SendBanDMAsync("You were banned", $"You were banned from **{ctx.Guild.Name}**\n**Reason**: {reason}\nID: `{caseId}`\nTo appeal, fill out the form ");
            }
            catch (Exception)
            {
                Console.WriteLine("Unable to DM user.");
            }
            await ctx.Guild.BanMemberAsync(user, 7, reason);
        }
Example #5
0
        public async Task TempMuteMember(CommandContext ctx, DiscordMember user, string duration, [RemainingText] string reason)
        {
            if (user == ctx.Member)
            {
                return;
            }
            if (!CheckInteraction.CanModerate(ctx.Member, user))
            {
                await ctx.Message.DeleteAsync();

                return;
            }
            var role         = ctx.Guild.GetRole(826243826946408498);
            var textChannels = await ctx.Guild.GetChannelsAsync();

            foreach (var channel in textChannels.Where(x => x.Type == ChannelType.Text))
            {
                if (!channel.PermissionOverwrites.Any(x => x.CheckPermission(Permissions.SendMessages) == PermissionLevel.Denied))
                {
                    await channel.AddOverwriteAsync(role, deny : Permissions.SendMessages);
                }
            }
            var voiceChannels = await ctx.Guild.GetChannelsAsync();

            foreach (var channel in voiceChannels.Where(x => x.Type == ChannelType.Voice))
            {
                if (!channel.PermissionOverwrites.Any(x => x.CheckPermission(Permissions.SendMessages) == PermissionLevel.Denied))
                {
                    await channel.AddOverwriteAsync(role, deny : Permissions.Speak);
                }
            }
            var caseId = await produceID(20);

            char minute    = 'm';
            char day       = 'd';
            char hour      = 'h';
            char second    = 's';
            char week      = 'w';
            var  MuteTimer = new string(duration.Where(char.IsDigit).ToArray());

            if (minute.ToString().Any(duration.Contains) && day.ToString().Any(duration.Contains) && hour.ToString().Any(duration.Contains) && second.ToString().Any(duration.Contains))
            {
                await ctx.Channel.SendMessageAsync("You cannot pass multiple time formats.");

                return;
            }
            if (MuteTimer.Length == 0)
            {
                return;
            }
            var Timer = Convert.ToInt32(MuteTimer);

            if (minute.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Mutes.Add(new Mute {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromMinutes(Timer), Role = role
                });
            }
            else if (day.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Mutes.Add(new Mute {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromDays(Timer), Role = role
                });
            }
            else if (second.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Mutes.Add(new Mute {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromSeconds(Timer), Role = role
                });
            }
            else if (hour.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Mutes.Add(new Mute {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromHours(Timer), Role = role
                });
            }
            else if (week.ToString().Any(duration.ToLower().Contains))
            {
                Bot.Mutes.Add(new Mute {
                    Guild = ctx.Guild, User = user, End = DateTime.Now + TimeSpan.FromDays(Timer * 7), Role = role
                });
            }
            else
            {
                Console.WriteLine("");
            }
            await user.GrantRoleAsync(role);

            var e = new DiscordEmbedBuilder()
                    .WithDescription($"{user.Username} was muted with ID: `{caseId}`\n**{user.Username}**, check your DM's for information.")
                    .WithColor(DiscordColor.Green);
            var message = ctx.Channel.SendMessageAsync(embed: e.Build()).Result;
            await Task.Delay(5000);

            await message.DeleteAsync();

            var userEmbed = new DiscordEmbedBuilder()
                            .WithTitle("You were muted")
                            .WithColor(DiscordColor.Red)
                            .WithDescription($"You were muted in {ctx.Guild.Name}\n\nYou were muted for reason: {reason}.\nCaseID: `{caseId}`\n\nMute Timer: {duration}");

            try
            {
                await user.CreateDmChannelAsync();

                await user.SendMessageAsync(embed : userEmbed.Build());
            }
            catch (Exception)
            {
                Console.WriteLine("Unable to DM user.");
            }
        }
Example #6
0
 public BlObject()
 {
     IDalService = new DalService();
     CI          = new CheckInteraction();
 }