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 + " теперь может говорить(и писать тоже)!"); }); } } }
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(); } }
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(); }