private RaidProtectionConfig GetServerConfig(ulong server) { // checks if server exists in database and adds if not var serverConfig = _floofDB.RaidProtectionConfigs.Find(server); if (serverConfig == null) { _floofDB.Add(new RaidProtectionConfig { ServerId = server, Enabled = false, ModChannelId = null, ModRoleId = null, MutedRoleId = null, BanOffenders = true, ExceptionRoleId = null }); _floofDB.SaveChanges(); return(_floofDB.RaidProtectionConfigs.Find(server)); } else { return(serverConfig); } }
private void AddServerIfNotExists(ulong serverId) { // checks if server exists in database and adds if not LogConfig serverConfig = _floofDB.LogConfigs.Find(serverId); if (serverConfig == null) { _floofDB.Add(new LogConfig { ServerId = serverId, MessageUpdatedChannel = 0, MessageDeletedChannel = 0, UserBannedChannel = 0, UserUnbannedChannel = 0, UserJoinedChannel = 0, UserLeftChannel = 0, MemberUpdatesChannel = 0, UserKickedChannel = 0, UserMutedChannel = 0, UserUnmutedChannel = 0, IsOn = false }); _floofDB.SaveChanges(); } }
public async Task Add( [Summary("Tag name")] string tagName = null, [Summary("Tag content")][Remainder] string content = null) { IGuildUser user = (IGuildUser)Context.Message.Author; if (!UserHasTagUpdatePermissions(user)) { await Context.Channel.SendMessageAsync("You do not have the permission to add tags."); return; } if (!string.IsNullOrEmpty(tagName) && !string.IsNullOrEmpty(content)) { Regex rgx = new Regex("[^a-zA-Z0-9-]"); string processedTagName = rgx.Replace(tagName, "").ToLower(); if (string.IsNullOrEmpty(processedTagName)) { await SendEmbed(CreateDescriptionEmbed($"💾 Invalid Tag name. " + "Tag must contain characters within [A-Za-z0-9-].")); return; } bool tagExists = _floofDb.Tags.AsQueryable() .Any(tag => tag.TagName == processedTagName && tag.ServerId == Context.Guild.Id); if (tagExists) { await SendEmbed(CreateDescriptionEmbed($"💾 Tag `{processedTagName}` already exists")); return; } try { _floofDb.Add(new Tag { TagName = processedTagName, ServerId = Context.Guild.Id, UserId = Context.User.Id, TagContent = content }); _floofDb.SaveChanges(); await SendEmbed(CreateDescriptionEmbed($"💾 Added Tag `{processedTagName}`")); } catch (DbUpdateException e) { await SendEmbed(CreateDescriptionEmbed($"💾 Unable to add Tag `{processedTagName}`")); Log.Error(e.ToString()); } } else { await SendEmbed(CreateDescriptionEmbed($"💾 Usage: `tag add [name] [content]`")); } }
private void CheckServerEntryExists(ulong server) { // checks if server exists in database and adds if not var serverConfig = _floofDB.NicknameAlertConfigs.Find(server); if (serverConfig == null) { _floofDB.Add(new NicknameAlertConfig { ServerId = server, Channel = 0, IsOn = false }); _floofDB.SaveChanges(); } }
public async Task AddRole([Summary("role name")][Remainder] string roleName = null) { if (roleName == null) { await Context.Channel.SendMessageAsync("", false, new EmbedBuilder { Description = $"💾 Usage: `iamconfig add [rolename]`", Color = EMBED_COLOUR }.Build()); return; } // find the role by iterating over guild roles SocketRole role = GetRole(roleName.ToLower(), Context.Guild); if (role == null) { await Context.Channel.SendMessageAsync("Unable to find a role with that name to add."); return; } bool roleExistsInDb = CheckRoleEntryExists(role, Context.Guild); if (roleExistsInDb == true) { await Context.Channel.SendMessageAsync("Users can already join that role."); return; } else { try { _floofDb.Add(new UserAssignableRole { RoleId = role.Id, ServerId = Context.Guild.Id }); _floofDb.SaveChanges(); await Context.Channel.SendMessageAsync($"{role.Name} ({role.Id}) can now be joined by users!"); } catch (Exception ex) { await Context.Channel.SendMessageAsync("An error occured when trying to add that role."); Log.Error("Error when trying to add a joinable role: " + ex); } } }
private ErrorLogging GetServerConfig(ulong server) { // checks if server exists in database and adds if not var serverConfig = _floofDB.ErrorLoggingConfigs.Find(server); if (serverConfig == null) { _floofDB.Add(new ErrorLogging { ServerId = server, ChannelId = null, IsOn = false }); _floofDB.SaveChanges(); return(_floofDB.ErrorLoggingConfigs.Find(server)); } else { return(serverConfig); } }
private WelcomeGate GetServerConfig(ulong server) { // checks if server exists in database and adds if not var serverConfig = _floofDB.WelcomeGateConfigs.Find(server); if (serverConfig == null) { _floofDB.Add(new WelcomeGate { GuildID = server, Toggle = false, RoleId = null }); _floofDB.SaveChanges(); return(_floofDB.WelcomeGateConfigs.Find(server)); } else { return(serverConfig); } }
private ModMail GetServerConfig(ulong server) { // checks if server exists in database and adds if not var serverConfig = _floofDB.ModMails.Find(server); if (serverConfig == null) { _floofDB.Add(new ModMail { ServerId = server, ChannelId = null, IsEnabled = false, ModRoleId = null }); _floofDB.SaveChanges(); return(_floofDB.ModMails.Find(server)); } else { return(serverConfig); } }
public async Task OnReactionAdded(Cacheable <IUserMessage, ulong> message, ISocketMessageChannel channel, SocketReaction reaction) { var msg = message.Value as IUserMessage; var chan = channel as ITextChannel; if (reaction.User.Value.IsBot || msg == null || chan == null) { return; } var serverConfig = _floofDb.NicknameAlertConfigs.Find(chan.Guild.Id); if (serverConfig == null || !serverConfig.IsOn || serverConfig.Channel == 0) // not configured/disabled { return; } if (alertMessageIdsDic != null && alertMessageIdsDic.ContainsKey(msg.Id)) { SocketGuildUser badUser; alertMessageIdsDic.TryGetValue(msg.Id, out badUser); var moderator = badUser.Guild.GetUser(reaction.UserId); if (reaction.Emote.Name.Equals(BAN_EMOJI.Name)) { try { //sends message to user EmbedBuilder builder = new EmbedBuilder(); builder.Title = "⚖️ Ban Notification"; builder.Description = $"You have been banned from {badUser.Guild.Name}"; builder.AddField("Reason", "Banned by BOT for an inappropriate name"); builder.Color = Color.DarkOrange; await badUser.SendMessageAsync("", false, builder.Build()); await badUser.Guild.AddBanAsync(badUser, 0, $"{moderator.Username}#{moderator.Discriminator} ({moderator.Id}) -> Inappropriate Name"); await channel.SendMessageAsync($"Got it! I banned {badUser.Username}#{badUser.Discriminator}!"); } catch (Exception ex) { await channel.SendMessageAsync("Unable to ban user. Do I have the permissions?"); Log.Error("Unable to ban user for bad name: " + ex); } alertMessageIdsDic.Remove(msg.Id); } else if (reaction.Emote.Name.Equals(WARN_EMOJI.Name)) { try { FloofDataContext _floofDb = new FloofDataContext(); _floofDb.Add(new Warning { DateAdded = DateTime.Now, Forgiven = false, GuildId = badUser.Guild.Id, Moderator = $"{moderator.Username}#{moderator.Discriminator}", ModeratorId = moderator.Id, Reason = $"{moderator.Username}#{moderator.Discriminator} -> Warned by BOT for an inappropriate name", UserId = badUser.Id }); _floofDb.SaveChanges(); EmbedBuilder builder = new EmbedBuilder(); builder.Title = "⚖️ Warn Notification"; builder.Description = $"You have recieved a warning in {badUser.Guild.Name}"; builder.AddField("Reason", "Warned by BOT for an inappropriate name"); builder.Color = Color.DarkOrange; await badUser.SendMessageAsync("", false, builder.Build()); await channel.SendMessageAsync($"Got it! I warned {badUser.Username}#{badUser.Discriminator}!"); } catch (Exception ex) { await channel.SendMessageAsync("Unable to warn user. Do I have the permissions?"); Log.Error("Unable to warn user for bad name: " + ex); } alertMessageIdsDic.Remove(msg.Id); return; } else if (reaction.Emote.Name.Equals(KICK_EMOJI.Name)) { try { //sends message to user EmbedBuilder builder = new EmbedBuilder(); builder.Title = "🥾 Kick Notification"; builder.Description = $"You have been Kicked from {badUser.Guild.Name}"; builder.AddField("Reason", "Kicked by BOT for an inappropriate name"); builder.Color = Color.DarkOrange; await badUser.SendMessageAsync("", false, builder.Build()); await badUser.KickAsync($"{badUser.Username}#{badUser.Discriminator} -> Inappropriate Name"); await channel.SendMessageAsync($"Got it! I kicked {badUser.Username}#{badUser.Discriminator}!"); } catch (Exception ex) { await channel.SendMessageAsync("Unable to kick user. Do I have the permissions?"); Log.Error("Unable to kick user for bad name: " + ex); } alertMessageIdsDic.Remove(msg.Id); } else if (reaction.Emote.Name.Equals(REMOVE_NICKNAME_EMOJI.Name)) { try { await badUser.Guild.GetUser(badUser.Id).ModifyAsync(user => user.Nickname = ""); await channel.SendMessageAsync($"Got it! I removed {badUser.Username}#{badUser.Discriminator}'s nickname!"); } catch (Exception ex) { await channel.SendMessageAsync("Unable to remove their nickname. Do I have the permissions?"); Log.Error("Unable to remove nickname for bad name: " + ex); } alertMessageIdsDic.Remove(msg.Id); } else if (reaction.Emote.Name.Equals(NO_ACTION_EMOJI.Name)) { await channel.SendMessageAsync($"Got it! I took no action against {badUser.Username}#{badUser.Discriminator}!"); alertMessageIdsDic.Remove(msg.Id); } return; } }