internal async Task Warn(DiscordChannel channel, string reason = "No reason specified") { DiscordGuild Guild = await discord.GetGuildAsync(GuildID); DiscordMember Member = await Guild.GetMemberAsync(ID); DiscordEmbedBuilder WarnMessage = new DiscordEmbedBuilder { Title = $"Warns | {Member.Username}", Description = $"**{Member.Mention} has been warned for the following Reason:**\n{reason}\n**Muted: False**", Color = EmbedColor, Footer = new DiscordEmbedBuilder.EmbedFooter { Text = "Made by JokinAce 😎" }, Timestamp = DateTimeOffset.Now }; if ((Warns.Count + 1) >= 3) { if (!Muted) { DateTime MuteTime = DateTime.Now.AddDays(1); DiscordRole MutedRole = Guild.GetRole(Program.MutedRole); await Member.GrantRoleAsync(MutedRole); await SQLC.AddTempmute((long)Member.Id, MuteTime.ToBinary()); Muted = true; WarnMessage.WithDescription($"**{Member.Mention} has been warned for the following Reason:**\n{reason}\n**Muted: True**"); WarnMessage.WithTimestamp(MuteTime); _ = Task.Run(async() => { try { await Task.Delay(86400000); DiscordGuild Guild = await discord.GetGuildAsync(GuildID); DiscordRole MutedRole = Guild.GetRole(Program.MutedRole); var PS = await SQLC.GetPlayer(Member.Id); PS.Muted = false; await PS.Save(); await SQLC.DeleteTempmutesWithID((long)Member.Id); await Member.RevokeRoleAsync(MutedRole); } catch (Exception) { discord.Logger.LogInformation($"Failed the Warn Tempmute process for {Member.Username + "#" + Member.Discriminator}"); } }); } else { WarnMessage.WithDescription($"**{Member.Mention} has been warned for the following Reason:**\n{reason}\n**Muted: Already muted**"); } } var msg = await channel.SendMessageAsync(WarnMessage); Warns.Add($"{reason} | [Event]({msg.JumpLink})"); }
public static void closeConnection() { try { if (SQLC.State == ConnectionState.Open) { SQLC.Close(); } } catch (Exception ex) { MessageBox.Show("Can't close SQL server"); } }
public static void openConnection() { try { if (SQLC.State == ConnectionState.Closed) { SQLC.ConnectionString = GetConnectionString(); SQLC.Open(); } } catch (Exception ex) { MessageBox.Show("Can't open SQL server"); } }
public static async Task Discord_GuildMemberAdded(DiscordClient dc, DSharpPlus.EventArgs.GuildMemberAddEventArgs args) { await args.Member.GrantRoleAsync(args.Guild.GetRole(LearnerRole)); var PS = await SQLC.GetPlayer(args.Member.Id); if (PS.Muted) { _ = Task.Run(async() => { try { DiscordRole MutedRole = args.Guild.GetRole(Program.MutedRole); await args.Member.GrantRoleAsync(MutedRole); await Task.Delay(86400000); var PS = await SQLC.GetPlayer(args.Member.Id); PS.Muted = false; await PS.Save(); await args.Member.RevokeRoleAsync(MutedRole); } catch (Exception) { dc.Logger.LogInformation($"Failed the Mute Bypass detection process for {args.Member.Mention}"); } }); } }
public static Task Discord_Ready(DiscordClient dc, DSharpPlus.EventArgs.ReadyEventArgs args) { _ = Task.Run(async() => { dc.Logger.LogInformation("Looking for Reminders"); var output = await SQLC.GetReminders(); if (output.Any()) { foreach (var item in output) { long ID = item.ID; long ChannelID = item.ChannelID; long Date = item.Date; string Reminder = item.Reminder; try { DiscordGuild Guild = await dc.GetGuildAsync(GuildID); DiscordMember member = await Guild.GetMemberAsync((ulong)ID); DiscordChannel channel = Guild.GetChannel((ulong)ChannelID); DateTime dateTime = DateTime.FromBinary(Date); if (dateTime < DateTime.Now) { await SQLC.DeleteRemindersWithDate(Date); await channel.SendMessageAsync($":alarm_clock:, {member.Mention} you wanted me to remind you the following but I'm Late:\n\n{Reminder}"); continue; } _ = Task.Run(async() => { await Task.Delay((int)dateTime.Subtract(DateTime.Now).TotalMilliseconds); DiscordGuild Guild = await dc.GetGuildAsync(GuildID); DiscordMember member = await Guild.GetMemberAsync((ulong)ID); DiscordChannel channel = Guild.GetChannel((ulong)ChannelID); await channel.SendMessageAsync($":alarm_clock:, {member.Mention} you wanted me to remind you the following:\n\n{Reminder}"); await SQLC.DeleteRemindersWithDate(Date); }); } catch (Exception) { await SQLC.DeleteRemindersWithDate(Date); continue; } } dc.Logger.LogInformation("Found Reminders and started them"); } else { dc.Logger.LogInformation("No Reminders found"); } dc.Logger.LogInformation("Looking for muted Members"); output = await SQLC.GetTempmutes(); if (output.Any()) { foreach (var item in output) { long ID = item.ID; long Date = item.Date; try { DiscordGuild Guild = await dc.GetGuildAsync(GuildID); DiscordRole MutedRole = Guild.GetRole(Program.MutedRole); DiscordMember member = await Guild.GetMemberAsync((ulong)ID); DateTime dateTime = DateTime.FromBinary(Date); if (dateTime < DateTime.Now) { await SQLC.DeleteTempmutesWithID(ID); await member.RevokeRoleAsync(MutedRole); continue; } _ = Task.Run(async() => { try { await Task.Delay((int)dateTime.Subtract(DateTime.Now).TotalMilliseconds); DiscordGuild Guild = await dc.GetGuildAsync(GuildID); DiscordRole MutedRole = Guild.GetRole(Program.MutedRole); DiscordMember member = await Guild.GetMemberAsync((ulong)ID); var PS = await SQLC.GetPlayer(member.Id); PS.Muted = false; await PS.Save(); await member.RevokeRoleAsync(MutedRole); await SQLC.DeleteTempmutesWithID(ID); } catch (Exception) { dc.Logger.LogInformation($"Failed the Tempmute process for {member.Username + member.Discriminator}"); } }); } catch (Exception) { await SQLC.DeleteTempmutesWithID(ID); continue; } } dc.Logger.LogInformation("Found muted Members and starting them"); } else { dc.Logger.LogInformation("No muted Members found"); } while (true) { foreach (var Status in Statuses) { DiscordActivity activity = new DiscordActivity { ActivityType = ActivityType.Playing, Name = Status }; await dc.UpdateStatusAsync(activity, UserStatus.DoNotDisturb); dc.Logger.LogInformation("Status Update"); await Task.Delay(120000); } } }); return(Task.CompletedTask); }
public static Task Discord_MessageCreated(DiscordClient sender, DSharpPlus.EventArgs.MessageCreateEventArgs args) { _ = Task.Run(async() => { if (args.Author.IsBot) { return; } var PS = await SQLC.GetPlayer(args.Author.Id); string UsersMessage = args.Message.Content.Trim(); if (!UsersLastMessages.ContainsKey(args.Author.Id)) { UsersLastMessages.Add(args.Author.Id, new List <string>()); } else if (UsersLastMessages[args.Author.Id].Count > 1 && UsersLastMessages[args.Author.Id].Contains(UsersMessage)) { await PS.Warn(args.Channel, "Spamming"); UsersLastMessages[args.Author.Id].Clear(); } else if (UsersLastMessages[args.Author.Id].Contains(UsersMessage)) { UsersLastMessages[args.Author.Id].Add(UsersMessage); } else { UsersLastMessages[args.Author.Id].Clear(); UsersLastMessages[args.Author.Id].Add(UsersMessage); } if (new Random().Next(500) == 1) { using WebClient client = new WebClient(); await args.Message.RespondAsync(client.DownloadString("https://insult.mattbas.org/api/insult")); } string stripped = args.Message.Content.RemoveString(" ", ".").ToLower(); if (args.Message.Attachments.Count > 0) { foreach (var attach in args.Message.Attachments) { if (attach.FileName.EndsWith("exe")) { await args.Message.DeleteAsync("EXE File"); await PS.Warn(args.Channel, "Uploading a EXE File"); } else if (attach.FileName.EndsWith("dll")) { await args.Message.DeleteAsync("DLL File"); await PS.Warn(args.Channel, "Uploading a DLL File"); } } } else if (stripped.Contains("discordgg")) { await args.Message.DeleteAsync(); await PS.Warn(args.Channel, "Invite Link"); } else if (stripped.Contains("nigger") || stripped.Contains("n***a")) { await PS.Warn(args.Channel, "Saying the N-Word"); await args.Message.RespondAsync("Keep up the racism and you will get banned\nUse nig, nibba instead atleast"); } await PS.Save(); }); return(Task.CompletedTask); }
internal async Task Save() { await SQLC.Save(this).ConfigureAwait(false); }