mirror of
				https://gitlab.com/Kwoth/nadekobot.git
				synced 2025-11-03 16:24:27 -05:00 
			
		
		
		
	Massive cleanup
- Removed GuildConfigs repository, moved to extensions - Moved StreamSettings extension to GuildConfig extensions - namespace NadekoBot.Core has been simplified to NadekoBot in many places (more to come) - Replaced some raw delete queries with simple linqtodb queries
This commit is contained in:
		@@ -3,7 +3,7 @@ using System.Linq;
 | 
				
			|||||||
using System.Reflection;
 | 
					using System.Reflection;
 | 
				
			||||||
using Microsoft.Extensions.DependencyInjection;
 | 
					using Microsoft.Extensions.DependencyInjection;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Music;
 | 
					using NadekoBot.Modules.Music;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Modules.Administration.Services;
 | 
					using NadekoBot.Modules.Administration.Services;
 | 
				
			||||||
using NadekoBot.Modules.Music.Resolvers;
 | 
					using NadekoBot.Modules.Music.Resolvers;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ using NadekoBot.Core.Services;
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Text.RegularExpressions;
 | 
					using System.Text.RegularExpressions;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Common.TypeReaders
 | 
					namespace NadekoBot.Core.Common.TypeReaders
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ using NadekoBot.Extensions;
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using NadekoBot.Core.Modules.Administration.Services;
 | 
					using NadekoBot.Modules.Administration.Services;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#if !GLOBAL_NADEKO
 | 
					#if !GLOBAL_NADEKO
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ using System.Threading.Tasks;
 | 
				
			|||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Modules.Administration.Services;
 | 
					using NadekoBot.Modules.Administration.Services;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Administration
 | 
					namespace NadekoBot.Modules.Administration
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,6 +12,7 @@ using System.Collections.Concurrent;
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services.Database.Repositories.Impl;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Administration.Services
 | 
					namespace NadekoBot.Modules.Administration.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
@@ -45,7 +46,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var conf = uow.GuildConfigs.ForId(guildId,
 | 
					                var conf = uow._context.GuildConfigsForId(guildId,
 | 
				
			||||||
                    set => set.Include(x => x.DelMsgOnCmdChannels));
 | 
					                    set => set.Include(x => x.DelMsgOnCmdChannels));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                return (conf.DeleteMessageOnCommand, conf.DelMsgOnCmdChannels);
 | 
					                return (conf.DeleteMessageOnCommand, conf.DelMsgOnCmdChannels);
 | 
				
			||||||
@@ -83,7 +84,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            bool enabled;
 | 
					            bool enabled;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var conf = uow.GuildConfigs.ForId(guildId, set => set);
 | 
					                var conf = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
                enabled = conf.DeleteMessageOnCommand = !conf.DeleteMessageOnCommand;
 | 
					                enabled = conf.DeleteMessageOnCommand = !conf.DeleteMessageOnCommand;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                uow.SaveChanges();
 | 
					                uow.SaveChanges();
 | 
				
			||||||
@@ -95,7 +96,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var conf = uow.GuildConfigs.ForId(guildId,
 | 
					                var conf = uow._context.GuildConfigsForId(guildId,
 | 
				
			||||||
                    set => set.Include(x => x.DelMsgOnCmdChannels));
 | 
					                    set => set.Include(x => x.DelMsgOnCmdChannels));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var old = conf.DelMsgOnCmdChannels.FirstOrDefault(x => x.ChannelId == chId);
 | 
					                var old = conf.DelMsgOnCmdChannels.FirstOrDefault(x => x.ChannelId == chId);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,6 +9,7 @@ using System.Threading.Channels;
 | 
				
			|||||||
using LinqToDB;
 | 
					using LinqToDB;
 | 
				
			||||||
using Microsoft.EntityFrameworkCore;
 | 
					using Microsoft.EntityFrameworkCore;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services.Database.Repositories.Impl;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -107,7 +108,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        public async Task<IReadOnlyList<ulong>> ToggleAarAsync(ulong guildId, ulong roleId)
 | 
					        public async Task<IReadOnlyList<ulong>> ToggleAarAsync(ulong guildId, ulong roleId)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            using var uow = _db.GetDbContext();
 | 
					            using var uow = _db.GetDbContext();
 | 
				
			||||||
            var gc = uow.GuildConfigs.ForId(guildId, set => set);
 | 
					            var gc = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
            var roles = gc.GetAutoAssignableRoles();
 | 
					            var roles = gc.GetAutoAssignableRoles();
 | 
				
			||||||
            if(!roles.Remove(roleId) && roles.Count < 3)
 | 
					            if(!roles.Remove(roleId) && roles.Count < 3)
 | 
				
			||||||
                roles.Add(roleId);
 | 
					                roles.Add(roleId);
 | 
				
			||||||
@@ -142,7 +143,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using var uow = _db.GetDbContext();
 | 
					            using var uow = _db.GetDbContext();
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            var gc = uow.GuildConfigs.ForId(guildId, set => set);
 | 
					            var gc = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
            gc.SetAutoAssignableRoles(newRoles);
 | 
					            gc.SetAutoAssignableRoles(newRoles);
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            await uow.SaveChangesAsync();
 | 
					            await uow.SaveChangesAsync();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,7 +7,7 @@ using LinqToDB;
 | 
				
			|||||||
using LinqToDB.EntityFrameworkCore;
 | 
					using LinqToDB.EntityFrameworkCore;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Administration.Services
 | 
					namespace NadekoBot.Modules.Administration.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class DangerousCommandsService : INService
 | 
					    public class DangerousCommandsService : INService
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,6 +5,7 @@ using Discord.WebSocket;
 | 
				
			|||||||
using NadekoBot.Common.Collections;
 | 
					using NadekoBot.Common.Collections;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services.Database.Repositories.Impl;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Administration.Services
 | 
					namespace NadekoBot.Modules.Administration.Services
 | 
				
			||||||
@@ -63,7 +64,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            ulong? id;
 | 
					            ulong? id;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(guildId, set => set);
 | 
					                var gc = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (gc.GameVoiceChannel == vchId)
 | 
					                if (gc.GameVoiceChannel == vchId)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -67,7 +67,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(guildId, set => set);
 | 
					                var gc = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                gc.TimeZoneId = tz?.Id;
 | 
					                gc.TimeZoneId = tz?.Id;
 | 
				
			||||||
                uow.SaveChanges();
 | 
					                uow.SaveChanges();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -124,7 +124,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            int removed = 0;
 | 
					            int removed = 0;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var config = uow.GuildConfigs.LogSettingsFor(gid);
 | 
					                var config = uow._context.LogSettingsFor(gid);
 | 
				
			||||||
                LogSetting logSetting = GuildLogSettings.GetOrAdd(gid, (id) => config.LogSetting);
 | 
					                LogSetting logSetting = GuildLogSettings.GetOrAdd(gid, (id) => config.LogSetting);
 | 
				
			||||||
                removed = logSetting.IgnoredChannels.RemoveWhere(ilc => ilc.ChannelId == cid);
 | 
					                removed = logSetting.IgnoredChannels.RemoveWhere(ilc => ilc.ChannelId == cid);
 | 
				
			||||||
                config.LogSetting.IgnoredChannels.RemoveWhere(ilc => ilc.ChannelId == cid);
 | 
					                config.LogSetting.IgnoredChannels.RemoveWhere(ilc => ilc.ChannelId == cid);
 | 
				
			||||||
@@ -167,7 +167,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            LogSetting logSetting;
 | 
					            LogSetting logSetting;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                logSetting = uow.GuildConfigs.LogSettingsFor(guildId).LogSetting;
 | 
					                logSetting = uow._context.LogSettingsFor(guildId).LogSetting;
 | 
				
			||||||
                GuildLogSettings.AddOrUpdate(guildId, (id) => logSetting, (id, old) => logSetting);
 | 
					                GuildLogSettings.AddOrUpdate(guildId, (id) => logSetting, (id, old) => logSetting);
 | 
				
			||||||
                logSetting.LogOtherId =
 | 
					                logSetting.LogOtherId =
 | 
				
			||||||
                logSetting.MessageUpdatedId =
 | 
					                logSetting.MessageUpdatedId =
 | 
				
			||||||
@@ -256,7 +256,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            ulong? channelId = null;
 | 
					            ulong? channelId = null;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var logSetting = uow.GuildConfigs.LogSettingsFor(gid).LogSetting;
 | 
					                var logSetting = uow._context.LogSettingsFor(gid).LogSetting;
 | 
				
			||||||
                GuildLogSettings.AddOrUpdate(gid, (id) => logSetting, (id, old) => logSetting);
 | 
					                GuildLogSettings.AddOrUpdate(gid, (id) => logSetting, (id, old) => logSetting);
 | 
				
			||||||
                switch (type)
 | 
					                switch (type)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -1220,7 +1220,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var newLogSetting = uow.GuildConfigs.LogSettingsFor(guildId).LogSetting;
 | 
					                var newLogSetting = uow._context.LogSettingsFor(guildId).LogSetting;
 | 
				
			||||||
                switch (logChannelType)
 | 
					                switch (logChannelType)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    case LogType.Other:
 | 
					                    case LogType.Other:
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -173,7 +173,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var config = uow.GuildConfigs.ForId(guildId, set => set);
 | 
					                var config = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
                config.MuteRoleName = name;
 | 
					                config.MuteRoleName = name;
 | 
				
			||||||
                GuildMuteRoles.AddOrUpdate(guildId, name, (id, old) => name);
 | 
					                GuildMuteRoles.AddOrUpdate(guildId, name, (id, old) => name);
 | 
				
			||||||
                await uow.SaveChangesAsync();
 | 
					                await uow.SaveChangesAsync();
 | 
				
			||||||
@@ -191,7 +191,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
                StopTimer(usr.GuildId, usr.Id, TimerType.Mute);
 | 
					                StopTimer(usr.GuildId, usr.Id, TimerType.Mute);
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var config = uow.GuildConfigs.ForId(usr.Guild.Id,
 | 
					                    var config = uow._context.GuildConfigsForId(usr.Guild.Id,
 | 
				
			||||||
                        set => set.Include(gc => gc.MutedUsers)
 | 
					                        set => set.Include(gc => gc.MutedUsers)
 | 
				
			||||||
                            .Include(gc => gc.UnmuteTimers));
 | 
					                            .Include(gc => gc.UnmuteTimers));
 | 
				
			||||||
                    config.MutedUsers.Add(new MutedUserId()
 | 
					                    config.MutedUsers.Add(new MutedUserId()
 | 
				
			||||||
@@ -231,7 +231,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
                StopTimer(guildId, usrId, TimerType.Mute);
 | 
					                StopTimer(guildId, usrId, TimerType.Mute);
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var config = uow.GuildConfigs.ForId(guildId, set => set.Include(gc => gc.MutedUsers)
 | 
					                    var config = uow._context.GuildConfigsForId(guildId, set => set.Include(gc => gc.MutedUsers)
 | 
				
			||||||
                        .Include(gc => gc.UnmuteTimers));
 | 
					                        .Include(gc => gc.UnmuteTimers));
 | 
				
			||||||
                    var match = new MutedUserId()
 | 
					                    var match = new MutedUserId()
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
@@ -326,7 +326,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            await MuteUser(user, mod, muteType, reason).ConfigureAwait(false); // mute the user. This will also remove any previous unmute timers
 | 
					            await MuteUser(user, mod, muteType, reason).ConfigureAwait(false); // mute the user. This will also remove any previous unmute timers
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var config = uow.GuildConfigs.ForId(user.GuildId, set => set.Include(x => x.UnmuteTimers));
 | 
					                var config = uow._context.GuildConfigsForId(user.GuildId, set => set.Include(x => x.UnmuteTimers));
 | 
				
			||||||
                config.UnmuteTimers.Add(new UnmuteTimer()
 | 
					                config.UnmuteTimers.Add(new UnmuteTimer()
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    UserId = user.Id,
 | 
					                    UserId = user.Id,
 | 
				
			||||||
@@ -343,7 +343,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            await guild.AddBanAsync(user.Id, 0, reason).ConfigureAwait(false);
 | 
					            await guild.AddBanAsync(user.Id, 0, reason).ConfigureAwait(false);
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var config = uow.GuildConfigs.ForId(guild.Id, set => set.Include(x => x.UnbanTimer));
 | 
					                var config = uow._context.GuildConfigsForId(guild.Id, set => set.Include(x => x.UnbanTimer));
 | 
				
			||||||
                config.UnbanTimer.Add(new UnbanTimer()
 | 
					                config.UnbanTimer.Add(new UnbanTimer()
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    UserId = user.Id,
 | 
					                    UserId = user.Id,
 | 
				
			||||||
@@ -360,7 +360,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            await user.AddRoleAsync(role).ConfigureAwait(false);
 | 
					            await user.AddRoleAsync(role).ConfigureAwait(false);
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var config = uow.GuildConfigs.ForId(user.GuildId, set => set.Include(x => x.UnroleTimer));
 | 
					                var config = uow._context.GuildConfigsForId(user.GuildId, set => set.Include(x => x.UnroleTimer));
 | 
				
			||||||
                config.UnroleTimer.Add(new UnroleTimer()
 | 
					                config.UnroleTimer.Add(new UnroleTimer()
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    UserId = user.Id,
 | 
					                    UserId = user.Id,
 | 
				
			||||||
@@ -458,12 +458,12 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
                object toDelete;
 | 
					                object toDelete;
 | 
				
			||||||
                if (type == TimerType.Mute)
 | 
					                if (type == TimerType.Mute)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var config = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.UnmuteTimers));
 | 
					                    var config = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.UnmuteTimers));
 | 
				
			||||||
                    toDelete = config.UnmuteTimers.FirstOrDefault(x => x.UserId == userId);
 | 
					                    toDelete = config.UnmuteTimers.FirstOrDefault(x => x.UserId == userId);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                else
 | 
					                else
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var config = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.UnbanTimer));
 | 
					                    var config = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.UnbanTimer));
 | 
				
			||||||
                    toDelete = config.UnbanTimer.FirstOrDefault(x => x.UserId == userId);
 | 
					                    toDelete = config.UnbanTimer.FirstOrDefault(x => x.UserId == userId);
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                if (toDelete != null)
 | 
					                if (toDelete != null)
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -114,7 +114,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        private Task _bot_JoinedGuild(GuildConfig gc)
 | 
					        private Task _bot_JoinedGuild(GuildConfig gc)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            using var uow = _db.GetDbContext();
 | 
					            using var uow = _db.GetDbContext();
 | 
				
			||||||
            var gcWithData = uow.GuildConfigs.ForId(gc.GuildId,
 | 
					            var gcWithData = uow._context.GuildConfigsForId(gc.GuildId,
 | 
				
			||||||
                set => set
 | 
					                set => set
 | 
				
			||||||
                    .Include(x => x.AntiRaidSetting)
 | 
					                    .Include(x => x.AntiRaidSetting)
 | 
				
			||||||
                    .Include(x => x.AntiAltSetting)
 | 
					                    .Include(x => x.AntiAltSetting)
 | 
				
			||||||
@@ -304,7 +304,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.AntiRaidSetting));
 | 
					                var gc = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.AntiRaidSetting));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                gc.AntiRaidSetting = stats.AntiRaidSettings;
 | 
					                gc.AntiRaidSetting = stats.AntiRaidSettings;
 | 
				
			||||||
                await uow.SaveChangesAsync();
 | 
					                await uow.SaveChangesAsync();
 | 
				
			||||||
@@ -319,7 +319,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            {
 | 
					            {
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var gc = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.AntiRaidSetting));
 | 
					                    var gc = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.AntiRaidSetting));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    gc.AntiRaidSetting = null;
 | 
					                    gc.AntiRaidSetting = null;
 | 
				
			||||||
                    uow.SaveChanges();
 | 
					                    uow.SaveChanges();
 | 
				
			||||||
@@ -336,7 +336,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
                removed.UserStats.ForEach(x => x.Value.Dispose());
 | 
					                removed.UserStats.ForEach(x => x.Value.Dispose());
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var gc = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.AntiSpamSetting)
 | 
					                    var gc = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.AntiSpamSetting)
 | 
				
			||||||
                        .ThenInclude(x => x.IgnoredChannels));
 | 
					                        .ThenInclude(x => x.IgnoredChannels));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    gc.AntiSpamSetting = null;
 | 
					                    gc.AntiSpamSetting = null;
 | 
				
			||||||
@@ -375,7 +375,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.AntiSpamSetting));
 | 
					                var gc = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.AntiSpamSetting));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (gc.AntiSpamSetting != null)
 | 
					                if (gc.AntiSpamSetting != null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -402,7 +402,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            bool added;
 | 
					            bool added;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.AntiSpamSetting).ThenInclude(x => x.IgnoredChannels));
 | 
					                var gc = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.AntiSpamSetting).ThenInclude(x => x.IgnoredChannels));
 | 
				
			||||||
                var spam = gc.AntiSpamSetting;
 | 
					                var spam = gc.AntiSpamSetting;
 | 
				
			||||||
                if (spam is null)
 | 
					                if (spam is null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -459,7 +459,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            int actionDurationMinutes = 0, ulong? roleId = null)
 | 
					            int actionDurationMinutes = 0, ulong? roleId = null)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            using var uow = _db.GetDbContext();
 | 
					            using var uow = _db.GetDbContext();
 | 
				
			||||||
            var gc = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.AntiAltSetting));
 | 
					            var gc = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.AntiAltSetting));
 | 
				
			||||||
            gc.AntiAltSetting = new AntiAltSetting()
 | 
					            gc.AntiAltSetting = new AntiAltSetting()
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                Action = action,
 | 
					                Action = action,
 | 
				
			||||||
@@ -478,7 +478,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
                return false;
 | 
					                return false;
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
            using var uow = _db.GetDbContext();
 | 
					            using var uow = _db.GetDbContext();
 | 
				
			||||||
            var gc = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.AntiAltSetting));
 | 
					            var gc = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.AntiAltSetting));
 | 
				
			||||||
            gc.AntiAltSetting = null;
 | 
					            gc.AntiAltSetting = null;
 | 
				
			||||||
            await uow.SaveChangesAsync();
 | 
					            await uow.SaveChangesAsync();
 | 
				
			||||||
            return true;
 | 
					            return true;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -156,7 +156,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(id, set => set
 | 
					                var gc = uow._context.GuildConfigsForId(id, set => set
 | 
				
			||||||
                    .Include(x => x.ReactionRoleMessages)
 | 
					                    .Include(x => x.ReactionRoleMessages)
 | 
				
			||||||
                    .ThenInclude(x => x.ReactionRoles));
 | 
					                    .ThenInclude(x => x.ReactionRoles));
 | 
				
			||||||
                if (gc.ReactionRoleMessages.Count >= 10)
 | 
					                if (gc.ReactionRoleMessages.Count >= 10)
 | 
				
			||||||
@@ -174,7 +174,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(id,
 | 
					                var gc = uow._context.GuildConfigsForId(id,
 | 
				
			||||||
                    set => set.Include(x => x.ReactionRoleMessages)
 | 
					                    set => set.Include(x => x.ReactionRoleMessages)
 | 
				
			||||||
                        .ThenInclude(x => x.ReactionRoles));
 | 
					                        .ThenInclude(x => x.ReactionRoles));
 | 
				
			||||||
                uow._context.Set<ReactionRole>()
 | 
					                uow._context.Set<ReactionRole>()
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,10 +6,12 @@ using System;
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using NadekoBot.Modules.Administration;
 | 
				
			||||||
using NadekoBot.Modules.Xp;
 | 
					using NadekoBot.Modules.Xp;
 | 
				
			||||||
using NadekoBot.Modules.Administration.Common;
 | 
					using NadekoBot.Modules.Administration.Common;
 | 
				
			||||||
 | 
					using NadekoBot.Modules.Xp.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Administration.Services
 | 
					namespace NadekoBot.Modules.Administration.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class SelfAssignedRolesService : INService
 | 
					    public class SelfAssignedRolesService : INService
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -63,7 +65,7 @@ namespace NadekoBot.Core.Modules.Administration.Services
 | 
				
			|||||||
            bool newval;
 | 
					            bool newval;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var config = uow.GuildConfigs.ForId(guildId, set => set);
 | 
					                var config = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
                newval = config.AutoDeleteSelfAssignedRoleMessages = !config.AutoDeleteSelfAssignedRoleMessages;
 | 
					                newval = config.AutoDeleteSelfAssignedRoleMessages = !config.AutoDeleteSelfAssignedRoleMessages;
 | 
				
			||||||
                uow.SaveChanges();
 | 
					                uow.SaveChanges();
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
@@ -75,7 +77,7 @@ namespace NadekoBot.Core.Modules.Administration.Services
 | 
				
			|||||||
            LevelStats userLevelData;
 | 
					            LevelStats userLevelData;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var stats = uow.Xp.GetOrCreateUser(guildUser.Guild.Id, guildUser.Id);
 | 
					                var stats = uow._context.GetOrCreateUserXpStats(guildUser.Guild.Id, guildUser.Id);
 | 
				
			||||||
                userLevelData = new LevelStats(stats.Xp + stats.AwardedXp);
 | 
					                userLevelData = new LevelStats(stats.Xp + stats.AwardedXp);
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -137,7 +139,7 @@ namespace NadekoBot.Core.Modules.Administration.Services
 | 
				
			|||||||
            bool set = false;
 | 
					            bool set = false;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(guildId, y => y.Include(x => x.SelfAssignableRoleGroupNames));
 | 
					                var gc = uow._context.GuildConfigsForId(guildId, y => y.Include(x => x.SelfAssignableRoleGroupNames));
 | 
				
			||||||
                var toUpdate = gc.SelfAssignableRoleGroupNames.FirstOrDefault(x => x.Number == group);
 | 
					                var toUpdate = gc.SelfAssignableRoleGroupNames.FirstOrDefault(x => x.Number == group);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (string.IsNullOrWhiteSpace(name))
 | 
					                if (string.IsNullOrWhiteSpace(name))
 | 
				
			||||||
@@ -205,7 +207,7 @@ namespace NadekoBot.Core.Modules.Administration.Services
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(guildId, set => set);
 | 
					                var gc = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
                var autoDelete = gc.AutoDeleteSelfAssignedRoleMessages;
 | 
					                var autoDelete = gc.AutoDeleteSelfAssignedRoleMessages;
 | 
				
			||||||
                var exclusive = gc.ExclusiveSelfAssignedRoles;
 | 
					                var exclusive = gc.ExclusiveSelfAssignedRoles;
 | 
				
			||||||
                var roles = uow._context.SelfAssignableRoles.GetFromGuild(guildId);
 | 
					                var roles = uow._context.SelfAssignableRoles.GetFromGuild(guildId);
 | 
				
			||||||
@@ -239,7 +241,7 @@ namespace NadekoBot.Core.Modules.Administration.Services
 | 
				
			|||||||
            bool areExclusive;
 | 
					            bool areExclusive;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var config = uow.GuildConfigs.ForId(guildId, set => set);
 | 
					                var config = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                areExclusive = config.ExclusiveSelfAssignedRoles = !config.ExclusiveSelfAssignedRoles;
 | 
					                areExclusive = config.ExclusiveSelfAssignedRoles = !config.ExclusiveSelfAssignedRoles;
 | 
				
			||||||
                uow.SaveChanges();
 | 
					                uow.SaveChanges();
 | 
				
			||||||
@@ -255,7 +257,7 @@ namespace NadekoBot.Core.Modules.Administration.Services
 | 
				
			|||||||
            IDictionary<int, string> groupNames;
 | 
					            IDictionary<int, string> groupNames;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var gc = uow.GuildConfigs.ForId(guild.Id, set => set.Include(x => x.SelfAssignableRoleGroupNames));
 | 
					                var gc = uow._context.GuildConfigsForId(guild.Id, set => set.Include(x => x.SelfAssignableRoleGroupNames));
 | 
				
			||||||
                exclusive = gc.ExclusiveSelfAssignedRoles;
 | 
					                exclusive = gc.ExclusiveSelfAssignedRoles;
 | 
				
			||||||
                groupNames = gc.SelfAssignableRoleGroupNames.ToDictionary(x => x.Number, x => x.Name);
 | 
					                groupNames = gc.SelfAssignableRoleGroupNames.ToDictionary(x => x.Number, x => x.Name);
 | 
				
			||||||
                var roleModels = uow._context.SelfAssignableRoles.GetFromGuild(guild.Id);
 | 
					                var roleModels = uow._context.SelfAssignableRoles.GetFromGuild(guild.Id);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -61,7 +61,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            List<WarningPunishment> ps;
 | 
					            List<WarningPunishment> ps;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                ps = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.WarnPunishments))
 | 
					                ps = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.WarnPunishments))
 | 
				
			||||||
                    .WarnPunishments;
 | 
					                    .WarnPunishments;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                warnings += uow._context
 | 
					                warnings += uow._context
 | 
				
			||||||
@@ -191,7 +191,7 @@ WHERE GuildId in (SELECT GuildId FROM GuildConfigs WHERE WarnExpireHours > 0 AND
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var config = uow.GuildConfigs.ForId(guildId, inc => inc);
 | 
					                var config = uow._context.GuildConfigsForId(guildId, inc => inc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (config.WarnExpireHours == 0)
 | 
					                if (config.WarnExpireHours == 0)
 | 
				
			||||||
                    return;
 | 
					                    return;
 | 
				
			||||||
@@ -220,7 +220,7 @@ WHERE GuildId={guildId}
 | 
				
			|||||||
        public Task<int> GetWarnExpire(ulong guildId)
 | 
					        public Task<int> GetWarnExpire(ulong guildId)
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            using var uow = _db.GetDbContext();
 | 
					            using var uow = _db.GetDbContext();
 | 
				
			||||||
            var config = uow.GuildConfigs.ForId(guildId);
 | 
					            var config = uow._context.GuildConfigsForId(guildId, set => set);
 | 
				
			||||||
            return Task.FromResult(config.WarnExpireHours / 24);
 | 
					            return Task.FromResult(config.WarnExpireHours / 24);
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
@@ -228,7 +228,7 @@ WHERE GuildId={guildId}
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var config = uow.GuildConfigs.ForId(guildId, inc => inc);
 | 
					                var config = uow._context.GuildConfigsForId(guildId, inc => inc);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                config.WarnExpireHours = days * 24;
 | 
					                config.WarnExpireHours = days * 24;
 | 
				
			||||||
                config.WarnExpireAction = delete ? WarnExpireAction.Delete : WarnExpireAction.Clear;
 | 
					                config.WarnExpireAction = delete ? WarnExpireAction.Delete : WarnExpireAction.Clear;
 | 
				
			||||||
@@ -286,7 +286,7 @@ WHERE GuildId={guildId}
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var ps = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.WarnPunishments)).WarnPunishments;
 | 
					                var ps = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.WarnPunishments)).WarnPunishments;
 | 
				
			||||||
                var toDelete = ps.Where(x => x.Count == number);
 | 
					                var toDelete = ps.Where(x => x.Count == number);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                uow._context.RemoveRange(toDelete);
 | 
					                uow._context.RemoveRange(toDelete);
 | 
				
			||||||
@@ -310,7 +310,7 @@ WHERE GuildId={guildId}
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var ps = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.WarnPunishments)).WarnPunishments;
 | 
					                var ps = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.WarnPunishments)).WarnPunishments;
 | 
				
			||||||
                var p = ps.FirstOrDefault(x => x.Count == number);
 | 
					                var p = ps.FirstOrDefault(x => x.Count == number);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if (p != null)
 | 
					                if (p != null)
 | 
				
			||||||
@@ -326,7 +326,7 @@ WHERE GuildId={guildId}
 | 
				
			|||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                return uow.GuildConfigs.ForId(guildId, gc => gc.Include(x => x.WarnPunishments))
 | 
					                return uow._context.GuildConfigsForId(guildId, gc => gc.Include(x => x.WarnPunishments))
 | 
				
			||||||
                    .WarnPunishments
 | 
					                    .WarnPunishments
 | 
				
			||||||
                    .OrderBy(x => x.Count)
 | 
					                    .OrderBy(x => x.Count)
 | 
				
			||||||
                    .ToArray();
 | 
					                    .ToArray();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -84,7 +84,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            // need to load new guildconfig with vc role included 
 | 
					            // need to load new guildconfig with vc role included 
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var configWithVcRole = uow.GuildConfigs.ForId(
 | 
					                var configWithVcRole = uow._context.GuildConfigsForId(
 | 
				
			||||||
                    arg.GuildId,
 | 
					                    arg.GuildId,
 | 
				
			||||||
                    set => set.Include(x => x.VcRoleInfos)
 | 
					                    set => set.Include(x => x.VcRoleInfos)
 | 
				
			||||||
                );
 | 
					                );
 | 
				
			||||||
@@ -144,7 +144,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
            guildVcRoles.AddOrUpdate(vcId, role, (key, old) => role);
 | 
					            guildVcRoles.AddOrUpdate(vcId, role, (key, old) => role);
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var conf = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.VcRoleInfos));
 | 
					                var conf = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.VcRoleInfos));
 | 
				
			||||||
                var toDelete = conf.VcRoleInfos.FirstOrDefault(x => x.VoiceChannelId == vcId); // remove old one
 | 
					                var toDelete = conf.VcRoleInfos.FirstOrDefault(x => x.VoiceChannelId == vcId); // remove old one
 | 
				
			||||||
                if(toDelete != null)
 | 
					                if(toDelete != null)
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
@@ -169,7 +169,7 @@ namespace NadekoBot.Modules.Administration.Services
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var conf = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.VcRoleInfos));
 | 
					                var conf = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.VcRoleInfos));
 | 
				
			||||||
                var toRemove = conf.VcRoleInfos.Where(x => x.VoiceChannelId == vcId).ToList();
 | 
					                var toRemove = conf.VcRoleInfos.Where(x => x.VoiceChannelId == vcId).ToList();
 | 
				
			||||||
                uow._context.RemoveRange(toRemove);
 | 
					                uow._context.RemoveRange(toRemove);
 | 
				
			||||||
                uow.SaveChanges();
 | 
					                uow.SaveChanges();
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,14 +6,12 @@ using Discord.Commands;
 | 
				
			|||||||
using Discord.WebSocket;
 | 
					using Discord.WebSocket;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common.AnimalRacing;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Common.AnimalRacing;
 | 
					using NadekoBot.Modules.Gambling.Common.AnimalRacing;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Common.AnimalRacing.Exceptions;
 | 
					 | 
				
			||||||
using NadekoBot.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
 | 
					using NadekoBot.Modules.Gambling.Common.AnimalRacing.Exceptions;
 | 
				
			||||||
using NadekoBot.Modules.Games.Services;
 | 
					using NadekoBot.Modules.Games.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,14 +1,16 @@
 | 
				
			|||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common.Blackjack;
 | 
					using NadekoBot.Modules.Gambling.Common.Blackjack;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Services;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ using System.Linq;
 | 
				
			|||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Common;
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common.AnimalRacing;
 | 
					using NadekoBot.Modules.Gambling.Common.AnimalRacing;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
using CommandLine;
 | 
					using CommandLine;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common.AnimalRacing
 | 
					namespace NadekoBot.Modules.Gambling.Common.AnimalRacing
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class RaceOptions : INadekoCommandOptions
 | 
					    public class RaceOptions : INadekoCommandOptions
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common
 | 
					namespace NadekoBot.Modules.Gambling.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Betroll
 | 
					    public class Betroll
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ using NadekoBot.Core.Services;
 | 
				
			|||||||
using NadekoBot.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Blackjack
 | 
					namespace NadekoBot.Modules.Gambling.Common.Blackjack
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Blackjack
 | 
					    public class Blackjack
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ using System;
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Blackjack
 | 
					namespace NadekoBot.Modules.Gambling.Common.Blackjack
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public abstract class Player
 | 
					    public abstract class Player
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ using NadekoBot.Common;
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common
 | 
					namespace NadekoBot.Modules.Gambling.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class CurrencyRaffleGame
 | 
					    public class CurrencyRaffleGame
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
using CommandLine;
 | 
					using CommandLine;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Events
 | 
					namespace NadekoBot.Modules.Gambling.Common.Events
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class EventOptions : INadekoCommandOptions
 | 
					    public class EventOptions : INadekoCommandOptions
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ using System.Threading;
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Events
 | 
					namespace NadekoBot.Modules.Gambling.Common.Events
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class GameStatusEvent : ICurrencyEvent
 | 
					    public class GameStatusEvent : ICurrencyEvent
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -11,10 +11,10 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Events
 | 
					namespace NadekoBot.Modules.Gambling.Common.Events
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class ReactionEvent : ICurrencyEvent
 | 
					    public class ReactionEvent : ICurrencyEvent
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using NadekoBot.Common.Yml;
 | 
					using NadekoBot.Common.Yml;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common
 | 
					namespace NadekoBot.Modules.Gambling.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class GamblingConfig
 | 
					    public sealed class GamblingConfig
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,9 +3,9 @@ using Discord;
 | 
				
			|||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Modules;
 | 
					using NadekoBot.Modules;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common
 | 
					namespace NadekoBot.Modules.Gambling.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public abstract class GamblingModule<TService> : NadekoModule<TService>
 | 
					    public abstract class GamblingModule<TService> : NadekoModule<TService>
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace NadekoBot.Core.Modules.Gambling.Common
 | 
					namespace NadekoBot.Modules.Gambling.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class Payout
 | 
					    public class Payout
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,7 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Common
 | 
					namespace NadekoBot.Modules.Gambling.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class RollDuelGame
 | 
					    public class RollDuelGame
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Waifu
 | 
					namespace NadekoBot.Modules.Gambling.Common.Waifu
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public enum AffinityTitle
 | 
					    public enum AffinityTitle
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Waifu
 | 
					namespace NadekoBot.Modules.Gambling.Common.Waifu
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public enum ClaimTitle
 | 
					    public enum ClaimTitle
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Waifu
 | 
					namespace NadekoBot.Modules.Gambling.Common.Waifu
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public enum DivorceResult
 | 
					    public enum DivorceResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Waifu
 | 
					namespace NadekoBot.Modules.Gambling.Common.Waifu
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public enum WaifuClaimResult
 | 
					    public enum WaifuClaimResult
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace NadekoBot.Core.Modules.Gambling.Common.Waifu
 | 
					namespace NadekoBot.Modules.Gambling.Common.Waifu
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public struct WaifuProfileTitle
 | 
					    public struct WaifuProfileTitle
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Common;
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling.Common.WheelOfFortune
 | 
					namespace NadekoBot.Modules.Gambling.Common.WheelOfFortune
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,16 +2,15 @@
 | 
				
			|||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using Discord.WebSocket;
 | 
					using Discord.WebSocket;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Common.Connect4;
 | 
					using NadekoBot.Modules.Gambling.Common.Connect4;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,12 +4,11 @@ using NadekoBot.Extensions;
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Modules.Gambling.Common.Events;
 | 
				
			||||||
 | 
					using System;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common.Events;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using System;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,11 +1,11 @@
 | 
				
			|||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@ using Discord;
 | 
				
			|||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using NadekoBot.Common;
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Services;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using SixLabors.ImageSharp;
 | 
					using SixLabors.ImageSharp;
 | 
				
			||||||
using SixLabors.ImageSharp.PixelFormats;
 | 
					using SixLabors.ImageSharp.PixelFormats;
 | 
				
			||||||
@@ -11,6 +11,7 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Text.RegularExpressions;
 | 
					using System.Text.RegularExpressions;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using Image = SixLabors.ImageSharp.Image;
 | 
					using Image = SixLabors.ImageSharp.Image;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,11 +7,12 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.IO;
 | 
					using System.IO;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using Image = SixLabors.ImageSharp.Image;
 | 
					using Image = SixLabors.ImageSharp.Image;
 | 
				
			||||||
using SixLabors.ImageSharp;
 | 
					using SixLabors.ImageSharp;
 | 
				
			||||||
using SixLabors.ImageSharp.PixelFormats;
 | 
					using SixLabors.ImageSharp.PixelFormats;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,9 +2,7 @@ using Discord;
 | 
				
			|||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using NadekoBot.Common;
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using SixLabors.ImageSharp;
 | 
					using SixLabors.ImageSharp;
 | 
				
			||||||
@@ -12,7 +10,8 @@ using SixLabors.ImageSharp.PixelFormats;
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using Image = SixLabors.ImageSharp.Image;
 | 
					using Image = SixLabors.ImageSharp.Image;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,10 +3,8 @@ using Discord.Commands;
 | 
				
			|||||||
using Discord.WebSocket;
 | 
					using Discord.WebSocket;
 | 
				
			||||||
using NadekoBot.Common;
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
@@ -15,8 +13,10 @@ using System.Globalization;
 | 
				
			|||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Numerics;
 | 
					using System.Numerics;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Services.Database;
 | 
					using NadekoBot.Core.Services.Database;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,8 +1,8 @@
 | 
				
			|||||||
using NadekoBot.Core.Modules.Gambling.Common.Blackjack;
 | 
					using NadekoBot.Modules.Gambling.Common.Blackjack;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using System.Collections.Concurrent;
 | 
					using System.Collections.Concurrent;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Services
 | 
					namespace NadekoBot.Modules.Gambling.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class BlackJackService : INService
 | 
					    public class BlackJackService : INService
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common.Events;
 | 
					using NadekoBot.Modules.Gambling.Common.Events;
 | 
				
			||||||
using System.Collections.Concurrent;
 | 
					using System.Collections.Concurrent;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
@@ -10,7 +10,7 @@ using NadekoBot.Core.Services.Database.Models;
 | 
				
			|||||||
using System.Net.Http;
 | 
					using System.Net.Http;
 | 
				
			||||||
using Newtonsoft.Json;
 | 
					using Newtonsoft.Json;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling.Services
 | 
					namespace NadekoBot.Modules.Gambling.Services
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,13 +1,13 @@
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Services
 | 
					namespace NadekoBot.Modules.Gambling.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class CurrencyRaffleService : INService
 | 
					    public class CurrencyRaffleService : INService
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,9 @@
 | 
				
			|||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
using NadekoBot.Core.Common.Configs;
 | 
					using NadekoBot.Core.Common.Configs;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Services
 | 
					namespace NadekoBot.Modules.Gambling.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class GamblingConfigService : ConfigServiceBase<GamblingConfig>
 | 
					    public sealed class GamblingConfigService : ConfigServiceBase<GamblingConfig>
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,5 +1,5 @@
 | 
				
			|||||||
using Discord.WebSocket;
 | 
					using Discord.WebSocket;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Common.Connect4;
 | 
					using NadekoBot.Modules.Gambling.Common.Connect4;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Common.WheelOfFortune;
 | 
					using NadekoBot.Modules.Gambling.Common.WheelOfFortune;
 | 
				
			||||||
@@ -10,7 +10,7 @@ using System.Linq;
 | 
				
			|||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Microsoft.EntityFrameworkCore;
 | 
					using Microsoft.EntityFrameworkCore;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling.Services
 | 
					namespace NadekoBot.Modules.Gambling.Services
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Services
 | 
					namespace NadekoBot.Modules.Gambling.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface IShopService
 | 
					    public interface IShopService
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,8 +6,9 @@ using NadekoBot.Core.Services;
 | 
				
			|||||||
using NadekoBot.Core.Services.Database;
 | 
					using NadekoBot.Core.Services.Database;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
 | 
					using NadekoBot.Modules.Administration;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Gambling.Services
 | 
					namespace NadekoBot.Modules.Gambling.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class ShopService : IShopService
 | 
					    public class ShopService : IShopService
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
@@ -19,7 +20,7 @@ namespace NadekoBot.Core.Modules.Gambling.Services
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        private IndexedCollection<ShopEntry> GetEntriesInternal(IUnitOfWork uow, ulong guildId) =>
 | 
					        private IndexedCollection<ShopEntry> GetEntriesInternal(IUnitOfWork uow, ulong guildId) =>
 | 
				
			||||||
            uow.GuildConfigs.ForId(
 | 
					            uow._context.GuildConfigsForId(
 | 
				
			||||||
                    guildId,
 | 
					                    guildId,
 | 
				
			||||||
                    set => set.Include(x => x.ShopEntries).ThenInclude(x => x.Items)
 | 
					                    set => set.Include(x => x.ShopEntries).ThenInclude(x => x.Items)
 | 
				
			||||||
                )
 | 
					                )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -5,7 +5,6 @@ using NadekoBot.Common;
 | 
				
			|||||||
using NadekoBot.Common.Collections;
 | 
					using NadekoBot.Common.Collections;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Repositories;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Services.Impl;
 | 
					using NadekoBot.Core.Services.Impl;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using SixLabors.Fonts;
 | 
					using SixLabors.Fonts;
 | 
				
			||||||
@@ -20,7 +19,7 @@ using System.IO;
 | 
				
			|||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Administration;
 | 
				
			||||||
using Image = SixLabors.ImageSharp.Image;
 | 
					using Image = SixLabors.ImageSharp.Image;
 | 
				
			||||||
using Color = SixLabors.ImageSharp.Color;
 | 
					using Color = SixLabors.ImageSharp.Color;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -80,7 +79,7 @@ namespace NadekoBot.Modules.Gambling.Services
 | 
				
			|||||||
            bool enabled;
 | 
					            bool enabled;
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var guildConfig = uow.GuildConfigs.ForId(gid, set => set.Include(gc => gc.GenerateCurrencyChannelIds));
 | 
					                var guildConfig = uow._context.GuildConfigsForId(gid, set => set.Include(gc => gc.GenerateCurrencyChannelIds));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                var toAdd = new GCChannelId() { ChannelId = cid };
 | 
					                var toAdd = new GCChannelId() { ChannelId = cid };
 | 
				
			||||||
                if (!guildConfig.GenerateCurrencyChannelIds.Contains(toAdd))
 | 
					                if (!guildConfig.GenerateCurrencyChannelIds.Contains(toAdd))
 | 
				
			||||||
@@ -104,11 +103,11 @@ namespace NadekoBot.Modules.Gambling.Services
 | 
				
			|||||||
            return enabled;
 | 
					            return enabled;
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        public IEnumerable<GeneratingChannel> GetAllGeneratingChannels()
 | 
					        public IEnumerable<GuildConfigExtensions.GeneratingChannel> GetAllGeneratingChannels()
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            using (var uow = _db.GetDbContext())
 | 
					            using (var uow = _db.GetDbContext())
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                var chs = uow.GuildConfigs.GetGeneratingChannels();
 | 
					                var chs = uow._context.GuildConfigs.GetGeneratingChannels();
 | 
				
			||||||
                return chs;
 | 
					                return chs;
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using Microsoft.EntityFrameworkCore;
 | 
					using Microsoft.EntityFrameworkCore;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common.Waifu;
 | 
					using NadekoBot.Modules.Gambling.Common.Waifu;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Repositories;
 | 
					using NadekoBot.Core.Services.Database.Repositories;
 | 
				
			||||||
@@ -8,8 +8,9 @@ using System;
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling.Services
 | 
					namespace NadekoBot.Modules.Gambling.Services
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,11 +8,12 @@ using Microsoft.EntityFrameworkCore;
 | 
				
			|||||||
using NadekoBot.Common;
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Common.Collections;
 | 
					using NadekoBot.Common.Collections;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
 | 
					using NadekoBot.Modules.Administration;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
@@ -48,7 +49,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                    throw new ArgumentOutOfRangeException(nameof(page));
 | 
					                    throw new ArgumentOutOfRangeException(nameof(page));
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
                using var uow = _db.GetDbContext();
 | 
					                using var uow = _db.GetDbContext();
 | 
				
			||||||
                var entries = uow.GuildConfigs.ForId(ctx.Guild.Id,
 | 
					                var entries = uow._context.GuildConfigsForId(ctx.Guild.Id,
 | 
				
			||||||
                        set => set.Include(x => x.ShopEntries)
 | 
					                        set => set.Include(x => x.ShopEntries)
 | 
				
			||||||
                            .ThenInclude(x => x.Items)).ShopEntries
 | 
					                            .ThenInclude(x => x.Items)).ShopEntries
 | 
				
			||||||
                        .ToIndexed();
 | 
					                        .ToIndexed();
 | 
				
			||||||
@@ -94,7 +95,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                ShopEntry entry;
 | 
					                ShopEntry entry;
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var config = uow.GuildConfigs.ForId(ctx.Guild.Id, set => set
 | 
					                    var config = uow._context.GuildConfigsForId(ctx.Guild.Id, set => set
 | 
				
			||||||
                        .Include(x => x.ShopEntries)
 | 
					                        .Include(x => x.ShopEntries)
 | 
				
			||||||
                        .ThenInclude(x => x.Items));
 | 
					                        .ThenInclude(x => x.Items));
 | 
				
			||||||
                    var entries = new IndexedCollection<ShopEntry>(config.ShopEntries);
 | 
					                    var entries = new IndexedCollection<ShopEntry>(config.ShopEntries);
 | 
				
			||||||
@@ -188,7 +189,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                                entry.Price).ConfigureAwait(false);
 | 
					                                entry.Price).ConfigureAwait(false);
 | 
				
			||||||
                            using (var uow = _db.GetDbContext())
 | 
					                            using (var uow = _db.GetDbContext())
 | 
				
			||||||
                            {
 | 
					                            {
 | 
				
			||||||
                                var entries = new IndexedCollection<ShopEntry>(uow.GuildConfigs.ForId(ctx.Guild.Id,
 | 
					                                var entries = new IndexedCollection<ShopEntry>(uow._context.GuildConfigsForId(ctx.Guild.Id,
 | 
				
			||||||
                                    set => set.Include(x => x.ShopEntries)
 | 
					                                    set => set.Include(x => x.ShopEntries)
 | 
				
			||||||
                                              .ThenInclude(x => x.Items)).ShopEntries);
 | 
					                                              .ThenInclude(x => x.Items)).ShopEntries);
 | 
				
			||||||
                                entry = entries.ElementAtOrDefault(index);
 | 
					                                entry = entries.ElementAtOrDefault(index);
 | 
				
			||||||
@@ -234,13 +235,13 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                };
 | 
					                };
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var entries = new IndexedCollection<ShopEntry>(uow.GuildConfigs.ForId(ctx.Guild.Id,
 | 
					                    var entries = new IndexedCollection<ShopEntry>(uow._context.GuildConfigsForId(ctx.Guild.Id,
 | 
				
			||||||
                        set => set.Include(x => x.ShopEntries)
 | 
					                        set => set.Include(x => x.ShopEntries)
 | 
				
			||||||
                                  .ThenInclude(x => x.Items)).ShopEntries)
 | 
					                                  .ThenInclude(x => x.Items)).ShopEntries)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        entry
 | 
					                        entry
 | 
				
			||||||
                    };
 | 
					                    };
 | 
				
			||||||
                    uow.GuildConfigs.ForId(ctx.Guild.Id, set => set).ShopEntries = entries;
 | 
					                    uow._context.GuildConfigsForId(ctx.Guild.Id, set => set).ShopEntries = entries;
 | 
				
			||||||
                    uow.SaveChanges();
 | 
					                    uow.SaveChanges();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                await ctx.Channel.EmbedAsync(EntryToEmbed(entry)
 | 
					                await ctx.Channel.EmbedAsync(EntryToEmbed(entry)
 | 
				
			||||||
@@ -262,13 +263,13 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                };
 | 
					                };
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var entries = new IndexedCollection<ShopEntry>(uow.GuildConfigs.ForId(ctx.Guild.Id,
 | 
					                    var entries = new IndexedCollection<ShopEntry>(uow._context.GuildConfigsForId(ctx.Guild.Id,
 | 
				
			||||||
                        set => set.Include(x => x.ShopEntries)
 | 
					                        set => set.Include(x => x.ShopEntries)
 | 
				
			||||||
                                  .ThenInclude(x => x.Items)).ShopEntries)
 | 
					                                  .ThenInclude(x => x.Items)).ShopEntries)
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        entry
 | 
					                        entry
 | 
				
			||||||
                    };
 | 
					                    };
 | 
				
			||||||
                    uow.GuildConfigs.ForId(ctx.Guild.Id, set => set).ShopEntries = entries;
 | 
					                    uow._context.GuildConfigsForId(ctx.Guild.Id, set => set).ShopEntries = entries;
 | 
				
			||||||
                    uow.SaveChanges();
 | 
					                    uow.SaveChanges();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
                await ctx.Channel.EmbedAsync(EntryToEmbed(entry)
 | 
					                await ctx.Channel.EmbedAsync(EntryToEmbed(entry)
 | 
				
			||||||
@@ -292,7 +293,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                bool added = false;
 | 
					                bool added = false;
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var entries = new IndexedCollection<ShopEntry>(uow.GuildConfigs.ForId(ctx.Guild.Id,
 | 
					                    var entries = new IndexedCollection<ShopEntry>(uow._context.GuildConfigsForId(ctx.Guild.Id,
 | 
				
			||||||
                        set => set.Include(x => x.ShopEntries)
 | 
					                        set => set.Include(x => x.ShopEntries)
 | 
				
			||||||
                                  .ThenInclude(x => x.Items)).ShopEntries);
 | 
					                                  .ThenInclude(x => x.Items)).ShopEntries);
 | 
				
			||||||
                    entry = entries.ElementAtOrDefault(index);
 | 
					                    entry = entries.ElementAtOrDefault(index);
 | 
				
			||||||
@@ -325,7 +326,7 @@ namespace NadekoBot.Modules.Gambling
 | 
				
			|||||||
                ShopEntry removed;
 | 
					                ShopEntry removed;
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    var config = uow.GuildConfigs.ForId(ctx.Guild.Id, set => set
 | 
					                    var config = uow._context.GuildConfigsForId(ctx.Guild.Id, set => set
 | 
				
			||||||
                        .Include(x => x.ShopEntries)
 | 
					                        .Include(x => x.ShopEntries)
 | 
				
			||||||
                        .ThenInclude(x => x.Items));
 | 
					                        .ThenInclude(x => x.Items));
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,6 @@
 | 
				
			|||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
@@ -11,9 +10,9 @@ using System.Threading.Tasks;
 | 
				
			|||||||
using NadekoBot.Common;
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using Image = SixLabors.ImageSharp.Image;
 | 
					using Image = SixLabors.ImageSharp.Image;
 | 
				
			||||||
using SixLabors.ImageSharp.Processing;
 | 
					using SixLabors.ImageSharp.Processing;
 | 
				
			||||||
using SixLabors.ImageSharp;
 | 
					using SixLabors.ImageSharp;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,16 +1,13 @@
 | 
				
			|||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common.Waifu;
 | 
					using NadekoBot.Modules.Gambling.Common.Waifu;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Microsoft.EntityFrameworkCore.Internal;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,14 +1,13 @@
 | 
				
			|||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Wof = NadekoBot.Modules.Gambling.Common.WheelOfFortune.WheelOfFortuneGame;
 | 
					using Wof = NadekoBot.Modules.Gambling.Common.WheelOfFortune.WheelOfFortuneGame;
 | 
				
			||||||
using NadekoBot.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					 | 
				
			||||||
using System.Collections.Immutable;
 | 
					using System.Collections.Immutable;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Gambling
 | 
					namespace NadekoBot.Modules.Gambling
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,9 +1,11 @@
 | 
				
			|||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using Discord.Commands;
 | 
					using Discord.Commands;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Services;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Modules.Administration;
 | 
				
			||||||
using NadekoBot.Modules.Games.Services;
 | 
					using NadekoBot.Modules.Games.Services;
 | 
				
			||||||
using NadekoBot.Modules.Games.Common.ChatterBot;
 | 
					using NadekoBot.Modules.Games.Common.ChatterBot;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -32,7 +34,7 @@ namespace NadekoBot.Modules.Games
 | 
				
			|||||||
                {
 | 
					                {
 | 
				
			||||||
                    using (var uow = _db.GetDbContext())
 | 
					                    using (var uow = _db.GetDbContext())
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        uow.GuildConfigs.SetCleverbotEnabled(ctx.Guild.Id, false);
 | 
					                        uow._context.GuildConfigs.SetCleverbotEnabled(ctx.Guild.Id, false);
 | 
				
			||||||
                        await uow.SaveChangesAsync();
 | 
					                        await uow.SaveChangesAsync();
 | 
				
			||||||
                    }
 | 
					                    }
 | 
				
			||||||
                    await ReplyConfirmLocalizedAsync("cleverbot_disabled").ConfigureAwait(false);
 | 
					                    await ReplyConfirmLocalizedAsync("cleverbot_disabled").ConfigureAwait(false);
 | 
				
			||||||
@@ -43,7 +45,7 @@ namespace NadekoBot.Modules.Games
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
                using (var uow = _db.GetDbContext())
 | 
					                using (var uow = _db.GetDbContext())
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    uow.GuildConfigs.SetCleverbotEnabled(ctx.Guild.Id, true);
 | 
					                    uow._context.GuildConfigs.SetCleverbotEnabled(ctx.Guild.Id, true);
 | 
				
			||||||
                    await uow.SaveChangesAsync();
 | 
					                    await uow.SaveChangesAsync();
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,10 +1,12 @@
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Services;
 | 
				
			||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Games.Common
 | 
					namespace NadekoBot.Modules.Games.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,8 +6,10 @@ using System.Text;
 | 
				
			|||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using CommandLine;
 | 
					using CommandLine;
 | 
				
			||||||
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Games.Common
 | 
					namespace NadekoBot.Modules.Games.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@ using Discord.Net;
 | 
				
			|||||||
using Discord.WebSocket;
 | 
					using Discord.WebSocket;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Modules.Games.Common.Trivia;
 | 
					using NadekoBot.Modules.Games.Common.Trivia;
 | 
				
			||||||
using NadekoBot.Modules.Games.Services;
 | 
					using NadekoBot.Modules.Games.Services;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
using CommandLine;
 | 
					using CommandLine;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Games.Common.Trivia
 | 
					namespace NadekoBot.Modules.Games.Common.Trivia
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class TriviaOptions : INadekoCommandOptions
 | 
					    public class TriviaOptions : INadekoCommandOptions
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,8 +7,7 @@ using NadekoBot.Modules.Administration.Services;
 | 
				
			|||||||
using NadekoBot.Modules.Gambling.Services;
 | 
					using NadekoBot.Modules.Gambling.Services;
 | 
				
			||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Common;
 | 
					using NadekoBot.Modules.Gambling.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Gambling.Services;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Games
 | 
					namespace NadekoBot.Modules.Games
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,9 +6,11 @@ using Discord;
 | 
				
			|||||||
using Discord.WebSocket;
 | 
					using Discord.WebSocket;
 | 
				
			||||||
using NadekoBot.Common.ModuleBehaviors;
 | 
					using NadekoBot.Common.ModuleBehaviors;
 | 
				
			||||||
using NadekoBot.Modules.Games.Common;
 | 
					using NadekoBot.Modules.Games.Common;
 | 
				
			||||||
 | 
					using NadekoBot.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
 | 
					using NadekoBot.Common.Collections;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Common.Collections;
 | 
					 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,6 @@ using NadekoBot.Common.Attributes;
 | 
				
			|||||||
using NadekoBot.Modules.Games.Common.Trivia;
 | 
					using NadekoBot.Modules.Games.Common.Trivia;
 | 
				
			||||||
using NadekoBot.Modules.Games.Services;
 | 
					using NadekoBot.Modules.Games.Services;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Games.Common.Trivia;
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Games
 | 
					namespace NadekoBot.Modules.Games
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
using CommandLine;
 | 
					using CommandLine;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Help.Common
 | 
					namespace NadekoBot.Modules.Help.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public class CommandsOptions : INadekoCommandOptions
 | 
					    public class CommandsOptions : INadekoCommandOptions
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ using NadekoBot.Common;
 | 
				
			|||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Common.Replacements;
 | 
					using NadekoBot.Common.Replacements;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Help.Common;
 | 
					using NadekoBot.Modules.Help.Common;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Modules.Help.Services;
 | 
					using NadekoBot.Modules.Help.Services;
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface ICachableTrackData
 | 
					    public interface ICachableTrackData
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface ILocalTrackResolver : IPlatformQueryResolver
 | 
					    public interface ILocalTrackResolver : IPlatformQueryResolver
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ using System.Threading.Tasks;
 | 
				
			|||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
#nullable enable
 | 
					#nullable enable
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface IMusicPlayer : IDisposable
 | 
					    public interface IMusicPlayer : IDisposable
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface IMusicQueue
 | 
					    public interface IMusicQueue
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
#nullable enable
 | 
					#nullable enable
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface IPlatformQueryResolver
 | 
					    public interface IPlatformQueryResolver
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface IQueuedTrackInfo : ITrackInfo
 | 
					    public interface IQueuedTrackInfo : ITrackInfo
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface IRadioResolver : IPlatformQueryResolver
 | 
					    public interface IRadioResolver : IPlatformQueryResolver
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,6 +1,6 @@
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface ISoundcloudResolver : IPlatformQueryResolver
 | 
					    public interface ISoundcloudResolver : IPlatformQueryResolver
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ using System;
 | 
				
			|||||||
using System.Collections.Generic;
 | 
					using System.Collections.Generic;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface ITrackCacher
 | 
					    public interface ITrackCacher
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface ITrackInfo
 | 
					    public interface ITrackInfo
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
#nullable enable
 | 
					#nullable enable
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface ITrackResolveProvider
 | 
					    public interface ITrackResolveProvider
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.Text.RegularExpressions;
 | 
					using System.Text.RegularExpressions;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public interface IYoutubeResolver : IPlatformQueryResolver
 | 
					    public interface IYoutubeResolver : IPlatformQueryResolver
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,7 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Text.Json.Serialization;
 | 
					using System.Text.Json.Serialization;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class CachableTrackData : ICachableTrackData
 | 
					    public sealed class CachableTrackData : ICachableTrackData
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
using System.Runtime.InteropServices;
 | 
					using System.Runtime.InteropServices;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music.Common
 | 
					namespace NadekoBot.Modules.Music.Common
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class MultimediaTimer : IDisposable
 | 
					    public sealed class MultimediaTimer : IDisposable
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public static class MusicExtensions
 | 
					    public static class MusicExtensions
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,4 +1,4 @@
 | 
				
			|||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public enum MusicPlatform
 | 
					    public enum MusicPlatform
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,13 +10,13 @@ using System.Threading;
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Ayu.Discord.Voice;
 | 
					using Ayu.Discord.Voice;
 | 
				
			||||||
using NadekoBot.Common;
 | 
					using NadekoBot.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Music.Common;
 | 
					using NadekoBot.Modules.Music.Common;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Modules.Music;
 | 
					using NadekoBot.Modules.Music;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class MusicPlayer : IMusicPlayer
 | 
					    public sealed class MusicPlayer : IMusicPlayer
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed partial class MusicQueue
 | 
					    public sealed partial class MusicQueue
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,7 +8,7 @@ using System.Threading.Tasks;
 | 
				
			|||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
using StackExchange.Redis;
 | 
					using StackExchange.Redis;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class RedisTrackCacher : ITrackCacher
 | 
					    public sealed class RedisTrackCacher : ITrackCacher
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class RemoteTrackInfo : ITrackInfo
 | 
					    public sealed class RemoteTrackInfo : ITrackInfo
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
using System;
 | 
					using System;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class SimpleTrackInfo : ITrackInfo
 | 
					    public sealed class SimpleTrackInfo : ITrackInfo
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -6,7 +6,7 @@ using System.IO;
 | 
				
			|||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Text;
 | 
					using System.Text;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Music;
 | 
					using NadekoBot.Modules.Music;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -2,7 +2,7 @@
 | 
				
			|||||||
using System.Net.Http;
 | 
					using System.Net.Http;
 | 
				
			||||||
using System.Text.RegularExpressions;
 | 
					using System.Text.RegularExpressions;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Music;
 | 
					using NadekoBot.Modules.Music;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,9 +3,8 @@ using System.Collections.Generic;
 | 
				
			|||||||
using System.Linq;
 | 
					using System.Linq;
 | 
				
			||||||
using System.Net.Http;
 | 
					using System.Net.Http;
 | 
				
			||||||
using System.Runtime.CompilerServices;
 | 
					using System.Runtime.CompilerServices;
 | 
				
			||||||
using NadekoBot.Core.Services.Impl;
 | 
					 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Music;
 | 
					using NadekoBot.Core.Services.Impl;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using Newtonsoft.Json.Linq;
 | 
					using Newtonsoft.Json.Linq;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -3,7 +3,7 @@ using System;
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class TrackResolveProvider : ITrackResolveProvider
 | 
					    public sealed class TrackResolveProvider : ITrackResolveProvider
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -10,7 +10,7 @@ using NadekoBot.Core.Services.Impl;
 | 
				
			|||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed class YtdlYoutubeResolver : IYoutubeResolver
 | 
					    public sealed class YtdlYoutubeResolver : IYoutubeResolver
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -13,7 +13,7 @@ using NadekoBot.Modules;
 | 
				
			|||||||
using NadekoBot.Modules.Administration.Services;
 | 
					using NadekoBot.Modules.Administration.Services;
 | 
				
			||||||
using NadekoBot.Modules.Music.Services;
 | 
					using NadekoBot.Modules.Music.Services;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    [NoPublicBot]
 | 
					    [NoPublicBot]
 | 
				
			||||||
    public sealed partial class Music : NadekoModule<IMusicService>
 | 
					    public sealed partial class Music : NadekoModule<IMusicService>
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -8,13 +8,15 @@ using Discord.Commands;
 | 
				
			|||||||
using NadekoBot.Common.Attributes;
 | 
					using NadekoBot.Common.Attributes;
 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
 | 
					using NadekoBot.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using NadekoBot.Modules;
 | 
					using NadekoBot.Modules;
 | 
				
			||||||
using NadekoBot.Modules.Music;
 | 
					using NadekoBot.Modules.Music;
 | 
				
			||||||
using NadekoBot.Modules.Music.Services;
 | 
					using NadekoBot.Modules.Music.Services;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Core.Modules.Music
 | 
					namespace NadekoBot.Modules.Music
 | 
				
			||||||
{
 | 
					{
 | 
				
			||||||
    public sealed partial class Music
 | 
					    public sealed partial class Music
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -4,7 +4,7 @@ using System.Diagnostics.CodeAnalysis;
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using NadekoBot.Core.Common;
 | 
					using NadekoBot.Core.Common;
 | 
				
			||||||
using NadekoBot.Core.Modules.Music;
 | 
					using NadekoBot.Modules.Music;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.Music.Services
 | 
					namespace NadekoBot.Modules.Music.Services
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -7,10 +7,13 @@ using System.Linq;
 | 
				
			|||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using Discord;
 | 
					using Discord;
 | 
				
			||||||
using Discord.WebSocket;
 | 
					using Discord.WebSocket;
 | 
				
			||||||
using NadekoBot.Core.Modules.Music;
 | 
					 | 
				
			||||||
using NadekoBot.Core.Services;
 | 
					using NadekoBot.Core.Services;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Models;
 | 
					using NadekoBot.Core.Services.Database.Models;
 | 
				
			||||||
using NadekoBot.Core.Services.Database.Repositories.Impl;
 | 
					using NadekoBot.Core.Services.Database.Repositories.Impl;
 | 
				
			||||||
 | 
					using NadekoBot.Modules.Music;
 | 
				
			||||||
 | 
					using NadekoBot.Services;
 | 
				
			||||||
 | 
					using NadekoBot.Services.Database.Models;
 | 
				
			||||||
 | 
					using NadekoBot.Services.Database.Repositories.Impl;
 | 
				
			||||||
using NadekoBot.Extensions;
 | 
					using NadekoBot.Extensions;
 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -82,7 +82,7 @@
 | 
				
			|||||||
//             {
 | 
					//             {
 | 
				
			||||||
//                 using (var uow = _db.GetDbContext())
 | 
					//                 using (var uow = _db.GetDbContext())
 | 
				
			||||||
//                 {
 | 
					//                 {
 | 
				
			||||||
//                     return uow.GuildConfigs.ForId(guildId, set => set).DefaultMusicVolume;
 | 
					//                     return uow._context.GuildConfigsForId(guildId, set => set).DefaultMusicVolume;
 | 
				
			||||||
//                 }
 | 
					//                 }
 | 
				
			||||||
//             });
 | 
					//             });
 | 
				
			||||||
//         }
 | 
					//         }
 | 
				
			||||||
@@ -256,7 +256,7 @@
 | 
				
			|||||||
//             bool val;
 | 
					//             bool val;
 | 
				
			||||||
//             using (var uow = _db.GetDbContext())
 | 
					//             using (var uow = _db.GetDbContext())
 | 
				
			||||||
//             {
 | 
					//             {
 | 
				
			||||||
//                 var gc = uow.GuildConfigs.ForId(id, set => set);
 | 
					//                 var gc = uow._context.GuildConfigsForId(id, set => set);
 | 
				
			||||||
//                 val = gc.AutoDcFromVc = !gc.AutoDcFromVc;
 | 
					//                 val = gc.AutoDcFromVc = !gc.AutoDcFromVc;
 | 
				
			||||||
//                 uow.SaveChanges();
 | 
					//                 uow.SaveChanges();
 | 
				
			||||||
//             }
 | 
					//             }
 | 
				
			||||||
@@ -278,7 +278,7 @@
 | 
				
			|||||||
//         {
 | 
					//         {
 | 
				
			||||||
//             using (var uow = _db.GetDbContext())
 | 
					//             using (var uow = _db.GetDbContext())
 | 
				
			||||||
//             {
 | 
					//             {
 | 
				
			||||||
//                 var ms = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.MusicSettings)).MusicSettings;
 | 
					//                 var ms = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.MusicSettings)).MusicSettings;
 | 
				
			||||||
//                 ms.MusicChannelId = cid;
 | 
					//                 ms.MusicChannelId = cid;
 | 
				
			||||||
//                 uow.SaveChanges();
 | 
					//                 uow.SaveChanges();
 | 
				
			||||||
//             }
 | 
					//             }
 | 
				
			||||||
@@ -288,7 +288,7 @@
 | 
				
			|||||||
//         {
 | 
					//         {
 | 
				
			||||||
//             using (var uow = _db.GetDbContext())
 | 
					//             using (var uow = _db.GetDbContext())
 | 
				
			||||||
//             {
 | 
					//             {
 | 
				
			||||||
//                 var ms = uow.GuildConfigs.ForId(guildId, set => set.Include(x => x.MusicSettings)).MusicSettings;
 | 
					//                 var ms = uow._context.GuildConfigsForId(guildId, set => set.Include(x => x.MusicSettings)).MusicSettings;
 | 
				
			||||||
//                 ms.SongAutoDelete = val;
 | 
					//                 ms.SongAutoDelete = val;
 | 
				
			||||||
//                 uow.SaveChanges();
 | 
					//                 uow.SaveChanges();
 | 
				
			||||||
//             }
 | 
					//             }
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -395,7 +395,7 @@
 | 
				
			|||||||
//             }
 | 
					//             }
 | 
				
			||||||
//             using (var uow = _db.GetDbContext())
 | 
					//             using (var uow = _db.GetDbContext())
 | 
				
			||||||
//             {
 | 
					//             {
 | 
				
			||||||
//                 uow.GuildConfigs.ForId(ctx.Guild.Id, set => set).DefaultMusicVolume = val / 100.0f;
 | 
					//                 uow._context.GuildConfigsForId(ctx.Guild.Id, set => set).DefaultMusicVolume = val / 100.0f;
 | 
				
			||||||
//                 uow.SaveChanges();
 | 
					//                 uow.SaveChanges();
 | 
				
			||||||
//             }
 | 
					//             }
 | 
				
			||||||
//             await ReplyConfirmLocalizedAsync("defvol_set", val).ConfigureAwait(false);
 | 
					//             await ReplyConfirmLocalizedAsync("defvol_set", val).ConfigureAwait(false);
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -12,7 +12,6 @@ using System.Linq;
 | 
				
			|||||||
using System.Net.Http;
 | 
					using System.Net.Http;
 | 
				
			||||||
using System.Threading;
 | 
					using System.Threading;
 | 
				
			||||||
using System.Threading.Tasks;
 | 
					using System.Threading.Tasks;
 | 
				
			||||||
using NadekoBot.Core.Modules.Searches.Common;
 | 
					 | 
				
			||||||
using Serilog;
 | 
					using Serilog;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
namespace NadekoBot.Modules.NSFW
 | 
					namespace NadekoBot.Modules.NSFW
 | 
				
			||||||
 
 | 
				
			|||||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user