Beispiel #1
0
        public static void CensorChat(DiscordMessage msg, DiscordGuild guild, DiscordClient client)
        {
            var censorWords = File.ReadAllText(".\\CensorWords.txt").Split("\r\n");

            if (BotInitSettings.ServersData.ContainsKey(guild.Id) &&        /*init check*/
                msg.Channel != BotInitSettings.GetUncensorChannel(guild) &&
                msg.Author != client.CurrentUser)
            {
                var content = msg.Content.ToLower();

                if (content.Split(' ', '-', '_', '&', '(', ')', '!').ContainsAnyElementOf(censorWords))
                {
                    msg.DeleteAsync();

                    var member = guild.GetMemberAsync(msg.Author.Id).Result;

                    msg.Channel
                    .SendMessageAsync(member.Mention + " ваше сообщение было удалено по причине ислользования нецензурной лексики.\r\n Вы были заглушены на 02:00:00");

                    member.RevokeRoleAsync(BotInitSettings.GetDefaultMemberRole(guild));
                    member.GrantRoleAsync(BotInitSettings.GetMutedMemberRole(guild));

                    Task.Run(async() =>
                    {
                        var span = new TimeSpan(2, 0, 0);
                        await Task.Delay((int)span.TotalMilliseconds);

                        await member.GrantRoleAsync(BotInitSettings.GetDefaultMemberRole(guild)).ThrowTaskException();
                        await member.RevokeRoleAsync(BotInitSettings.GetMutedMemberRole(guild)).ThrowTaskException();

                        await msg.Channel.SendMessageAsync(member.Mention + " теперь может говорить(и писать тоже)!");
                    });
                }
            }
        }
Beispiel #2
0
        public async Task MuteMember(CommandContext ctx, DiscordMember member, string reason, string time)
        {
            if (ctx.Member.PermissionsIn(ctx.Channel).HasPermission(Permissions.KickMembers) == false)
            {
                var msg = await ctx.Channel.SendMessageAsync("У вас недостаточно прав для этого");

                await Task.Delay(3000);

                await msg.DeleteAsync();

                return;
            }

            time = time == "-1" ? null : time;

            await member.RevokeRoleAsync(BotInitSettings.GetDefaultMemberRole(ctx.Guild)).ThrowTaskException();

            await member.GrantRoleAsync(BotInitSettings.GetMutedMemberRole(ctx.Guild)).ThrowTaskException();

            await ctx.Message.DeleteAsync();

            await ctx.Channel.SendMessageAsync(member.Mention + " заглушон на " + (time?.ToString() ?? "неограниченное время") + " по причине " + (reason ?? "*НЕЗАДАНО*"));

            if (time == null)
            {
                return;
            }
            else
            {
                var span = TimeSpan.Parse(time);
                await Task.Delay((int)span.TotalMilliseconds);

                await UnmuteMember(ctx, member).ThrowTaskException();
            }
        }
Beispiel #3
0
        public async Task UnmuteMember(CommandContext ctx, DiscordMember member)
        {
            if (ctx.Member.PermissionsIn(ctx.Channel).HasPermission(Permissions.KickMembers) == false)
            {
                var msg = await ctx.Channel.SendMessageAsync("У вас недостаточно прав для этого");

                await Task.Delay(3000);

                await msg.DeleteAsync();

                return;
            }

            await member.GrantRoleAsync(BotInitSettings.GetDefaultMemberRole(ctx.Guild)).ThrowTaskException();

            await member.RevokeRoleAsync(BotInitSettings.GetMutedMemberRole(ctx.Guild)).ThrowTaskException();

            await ctx.Channel.SendMessageAsync(member.Mention + " теперь может говорить(и писать тоже)!");

            await ctx.Message.DeleteAsync();
        }
Beispiel #4
0
        public async Task HelloNewMember(CommandContext ctx)
        {
            await ctx.Member.GrantRoleAsync(BotInitSettings.GetDefaultMemberRole(ctx.Guild)).ThrowTaskException();

            await ctx.Message.DeleteAsync().ThrowTaskException();
        }