Project now magically works
This commit is contained in:
parent
e60034728c
commit
fd729e553d
@ -6,6 +6,7 @@ using System;
|
|||||||
using System.Collections;
|
using System.Collections;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Diagnostics;
|
using System.Diagnostics;
|
||||||
|
using System.Linq;
|
||||||
using System.Threading;
|
using System.Threading;
|
||||||
|
|
||||||
namespace System.Collections.Concurrent
|
namespace System.Collections.Concurrent
|
||||||
@ -672,6 +673,18 @@ namespace System.Collections.Concurrent
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public int RemoveWhere(Func<T, bool> predicate)
|
||||||
|
{
|
||||||
|
var elems = this.Where(predicate);
|
||||||
|
var removed = 0;
|
||||||
|
foreach (var elem in elems)
|
||||||
|
{
|
||||||
|
if (this.TryRemove(elem))
|
||||||
|
removed++;
|
||||||
|
}
|
||||||
|
return removed;
|
||||||
|
}
|
||||||
|
|
||||||
private void AcquireAllLocks(ref int locksAcquired)
|
private void AcquireAllLocks(ref int locksAcquired)
|
||||||
{
|
{
|
||||||
// First, acquire lock 0
|
// First, acquire lock 0
|
||||||
|
@ -150,16 +150,13 @@ namespace NadekoBot.Modules.CustomReactions
|
|||||||
if (toDelete.GuildId == null && channel == null)
|
if (toDelete.GuildId == null && channel == null)
|
||||||
{
|
{
|
||||||
uow.CustomReactions.Remove(toDelete);
|
uow.CustomReactions.Remove(toDelete);
|
||||||
var toRemove = GlobalReactions.FirstOrDefault(cr => cr.Id == toDelete.Id);
|
GlobalReactions.RemoveWhere(cr => cr.Id == toDelete.Id);
|
||||||
GlobalReactions.TryRemove(toRemove);
|
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
else if (toDelete.GuildId != null && channel?.Guild.Id == toDelete.GuildId)
|
else if (toDelete.GuildId != null && channel?.Guild.Id == toDelete.GuildId)
|
||||||
{
|
{
|
||||||
uow.CustomReactions.Remove(toDelete);
|
uow.CustomReactions.Remove(toDelete);
|
||||||
var crs = GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>());
|
GuildReactions.GetOrAdd(channel.Guild.Id, new ConcurrentHashSet<CustomReaction>()).RemoveWhere(cr=>cr.Id == toDelete.Id);
|
||||||
var toRemove = crs.FirstOrDefault(cr => cr.Id == toDelete.Id);
|
|
||||||
|
|
||||||
success = true;
|
success = true;
|
||||||
}
|
}
|
||||||
if(success)
|
if(success)
|
||||||
|
@ -76,9 +76,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
uow.BotConfig.GetOrCreate().Blacklist.RemoveWhere(bi => bi.ItemId == id && bi.Type == type);
|
uow.BotConfig.GetOrCreate().Blacklist.RemoveWhere(bi => bi.ItemId == id && bi.Type == type);
|
||||||
var toRemove = BlacklistedItems.FirstOrDefault(bi => bi.ItemId == id && bi.Type == type);
|
BlacklistedItems.RemoveWhere(bi => bi.ItemId == id && bi.Type == type);
|
||||||
if (toRemove != null)
|
|
||||||
BlacklistedItems.TryRemove(toRemove);
|
|
||||||
}
|
}
|
||||||
await uow.CompleteAsync().ConfigureAwait(false);
|
await uow.CompleteAsync().ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
@ -34,7 +34,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
using (var uow = DbHandler.UnitOfWork())
|
using (var uow = DbHandler.UnitOfWork())
|
||||||
{
|
{
|
||||||
var configs = uow.GuildConfigs.GetAll();
|
var configs = uow.GuildConfigs.GetAll();
|
||||||
commandCooldowns = new ConcurrentDictionary<ulong, ConcurrentHashSet<CommandCooldown>>(configs.ToDictionary(k => k.GuildId, v => v.CommandCooldowns));
|
commandCooldowns = new ConcurrentDictionary<ulong, ConcurrentHashSet<CommandCooldown>>(configs.ToDictionary(k => k.GuildId, v => new ConcurrentHashSet<CommandCooldown>(v.CommandCooldowns)));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
[NadekoCommand, Usage, Description, Aliases]
|
[NadekoCommand, Usage, Description, Aliases]
|
||||||
|
@ -84,7 +84,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
InviteFilteringServers.Remove(channel.Guild.Id);
|
InviteFilteringServers.TryRemove(channel.Guild.Id);
|
||||||
await channel.SendMessageAsync("`Invite filtering disabled on this server.`").ConfigureAwait(false);
|
await channel.SendMessageAsync("`Invite filtering disabled on this server.`").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -117,7 +117,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
InviteFilteringChannels.Remove(channel.Id);
|
InviteFilteringChannels.TryRemove(channel.Id);
|
||||||
await channel.SendMessageAsync("`Invite filtering disabled on this channel.`").ConfigureAwait(false);
|
await channel.SendMessageAsync("`Invite filtering disabled on this channel.`").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -143,7 +143,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WordFilteringServers.Remove(channel.Guild.Id);
|
WordFilteringServers.TryRemove(channel.Guild.Id);
|
||||||
await channel.SendMessageAsync("`Word filtering disabled on this server.`").ConfigureAwait(false);
|
await channel.SendMessageAsync("`Word filtering disabled on this server.`").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -176,7 +176,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
WordFilteringChannels.Remove(channel.Id);
|
WordFilteringChannels.TryRemove(channel.Id);
|
||||||
await channel.SendMessageAsync("`Word filtering disabled on this channel.`").ConfigureAwait(false);
|
await channel.SendMessageAsync("`Word filtering disabled on this channel.`").ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -215,7 +215,7 @@ namespace NadekoBot.Modules.Permissions
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
filteredWords.Remove(word);
|
filteredWords.TryRemove(word);
|
||||||
await channel.SendMessageAsync($"Word `{word}` removed from the list of filtered words.")
|
await channel.SendMessageAsync($"Word `{word}` removed from the list of filtered words.")
|
||||||
.ConfigureAwait(false);
|
.ConfigureAwait(false);
|
||||||
}
|
}
|
||||||
|
@ -195,7 +195,7 @@ namespace NadekoBot.Modules.Searches
|
|||||||
toRemove = streams.Where(fs => fs.ChannelId == channel.Id && fs.Username.ToUpperInvariant() == username).FirstOrDefault();
|
toRemove = streams.Where(fs => fs.ChannelId == channel.Id && fs.Username.ToUpperInvariant() == username).FirstOrDefault();
|
||||||
if (toRemove != null)
|
if (toRemove != null)
|
||||||
{
|
{
|
||||||
config.FollowedStreams = streams.Except(new[] { toRemove }).ToList();
|
config.FollowedStreams = new HashSet<FollowedStream>(streams.Except(new[] { toRemove }));
|
||||||
await uow.CompleteAsync();
|
await uow.CompleteAsync();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -5,6 +5,7 @@ using System.Linq;
|
|||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
using JetBrains.Annotations;
|
using JetBrains.Annotations;
|
||||||
using NadekoBot.Services.Database.Models;
|
using NadekoBot.Services.Database.Models;
|
||||||
|
using NadekoBot.Extensions;
|
||||||
|
|
||||||
namespace NadekoBot.Services.Database
|
namespace NadekoBot.Services.Database
|
||||||
{
|
{
|
||||||
@ -47,7 +48,7 @@ namespace NadekoBot.Services.Database
|
|||||||
{
|
{
|
||||||
var bc = new BotConfig();
|
var bc = new BotConfig();
|
||||||
|
|
||||||
bc.ModulePrefixes.AddRange(new ConcurrentHashSet<ModulePrefix>()
|
bc.ModulePrefixes.AddRange(new HashSet<ModulePrefix>()
|
||||||
{
|
{
|
||||||
new ModulePrefix() { ModuleName = "Administration", Prefix = "." },
|
new ModulePrefix() { ModuleName = "Administration", Prefix = "." },
|
||||||
new ModulePrefix() { ModuleName = "Searches", Prefix = "~" },
|
new ModulePrefix() { ModuleName = "Searches", Prefix = "~" },
|
||||||
@ -64,7 +65,7 @@ namespace NadekoBot.Services.Database
|
|||||||
new ModulePrefix() { ModuleName = "Utility", Prefix = "." },
|
new ModulePrefix() { ModuleName = "Utility", Prefix = "." },
|
||||||
new ModulePrefix() { ModuleName = "CustomReactions", Prefix = "." }
|
new ModulePrefix() { ModuleName = "CustomReactions", Prefix = "." }
|
||||||
});
|
});
|
||||||
bc.RaceAnimals.AddRange(new ConcurrentHashSet<RaceAnimal>
|
bc.RaceAnimals.AddRange(new HashSet<RaceAnimal>
|
||||||
{
|
{
|
||||||
new RaceAnimal { Icon = "🐼", Name = "Panda" },
|
new RaceAnimal { Icon = "🐼", Name = "Panda" },
|
||||||
new RaceAnimal { Icon = "🐻", Name = "Bear" },
|
new RaceAnimal { Icon = "🐻", Name = "Bear" },
|
||||||
@ -75,7 +76,7 @@ namespace NadekoBot.Services.Database
|
|||||||
new RaceAnimal { Icon = "🦀", Name = "Crab" },
|
new RaceAnimal { Icon = "🦀", Name = "Crab" },
|
||||||
new RaceAnimal { Icon = "🦄", Name = "Unicorn" }
|
new RaceAnimal { Icon = "🦄", Name = "Unicorn" }
|
||||||
});
|
});
|
||||||
bc.EightBallResponses.AddRange(new ConcurrentHashSet<EightBallResponse>
|
bc.EightBallResponses.AddRange(new HashSet<EightBallResponse>
|
||||||
{
|
{
|
||||||
new EightBallResponse() { Text = "Most definitely yes" },
|
new EightBallResponse() { Text = "Most definitely yes" },
|
||||||
new EightBallResponse() { Text = "For sure" },
|
new EightBallResponse() { Text = "For sure" },
|
||||||
|
@ -23,6 +23,14 @@ namespace NadekoBot.Extensions
|
|||||||
http.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
|
http.DefaultRequestHeaders.Add("Accept", "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static void AddRange<T>(this HashSet<T> target, IEnumerable<T> elements) where T : class
|
||||||
|
{
|
||||||
|
foreach (var item in elements)
|
||||||
|
{
|
||||||
|
target.Add(item);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
public static bool IsInteger(this decimal number) => number == Math.Truncate(number);
|
public static bool IsInteger(this decimal number) => number == Math.Truncate(number);
|
||||||
|
|
||||||
public static string SanitizeMentions(this string str) =>
|
public static string SanitizeMentions(this string str) =>
|
||||||
|
Loading…
Reference in New Issue
Block a user