diff --git a/Geekbot.net/Handlers.cs b/Geekbot.net/Handlers.cs index a254c14..d16750b 100644 --- a/Geekbot.net/Handlers.cs +++ b/Geekbot.net/Handlers.cs @@ -1,4 +1,5 @@ using System; +using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; @@ -28,10 +29,12 @@ namespace Geekbot.net private readonly IUserRepository _userRepository; private readonly IReactionListener _reactionListener; private readonly DatabaseContext _messageCounterDatabaseContext; + private readonly RestApplication _applicationInfo; + private readonly List _ignoredServers; public Handlers(DatabaseInitializer databaseInitializer, IDiscordClient client, IGeekbotLogger logger, IAlmostRedis redis, IServiceProvider servicesProvider, CommandService commands, IUserRepository userRepository, - IReactionListener reactionListener) + IReactionListener reactionListener, RestApplication applicationInfo) { _database = databaseInitializer.Initialize(); _messageCounterDatabaseContext = databaseInitializer.Initialize(); @@ -42,6 +45,14 @@ namespace Geekbot.net _commands = commands; _userRepository = userRepository; _reactionListener = reactionListener; + _applicationInfo = applicationInfo; + // ToDo: create a clean solution for this... + _ignoredServers = new List() + { + 228623803201224704, // SwitzerLAN + 169844523181015040, // EEvent + 248531441548263425 // MYI + }; } // @@ -56,10 +67,21 @@ namespace Geekbot.net if (message.Author.IsBot) return Task.CompletedTask; var argPos = 0; + var guildId = ((SocketGuildChannel) message.Channel).Guild.Id; + // Some guilds only wanted very specific functionally without any of the commands, a quick hack that solves that short term... + // ToDo: cleanup + if (_ignoredServers.Contains(guildId)) + { + if (message.Author.Id != _applicationInfo.Owner.Id) + { + return Task.CompletedTask; + } + } + var lowCaseMsg = message.ToString().ToLower(); if (lowCaseMsg.StartsWith("hui")) { - var hasPing = _database.GuildSettings.FirstOrDefault(guild => guild.GuildId.Equals(((SocketGuildChannel) message.Channel).Guild.Id.AsLong()))?.Hui ?? false; + var hasPing = _database.GuildSettings.FirstOrDefault(guild => guild.GuildId.Equals(guildId.AsLong()))?.Hui ?? false; if (hasPing) { message.Channel.SendMessageAsync("hui!!!"); @@ -69,7 +91,7 @@ namespace Geekbot.net if (lowCaseMsg.StartsWith("ping ") || lowCaseMsg.Equals("ping")) { - var hasPing = _database.GuildSettings.FirstOrDefault(guild => guild.GuildId.Equals(((SocketGuildChannel) message.Channel).Guild.Id.AsLong()))?.Ping ?? false; + var hasPing = _database.GuildSettings.FirstOrDefault(guild => guild.GuildId.Equals(guildId.AsLong()))?.Ping ?? false; if (hasPing) { message.Channel.SendMessageAsync("pong"); diff --git a/Geekbot.net/Program.cs b/Geekbot.net/Program.cs index b7251a8..72ec6d5 100755 --- a/Geekbot.net/Program.cs +++ b/Geekbot.net/Program.cs @@ -156,6 +156,7 @@ namespace Geekbot.net var isConneted = await IsConnected(); if (isConneted) { + var applicationInfo = await _client.GetApplicationInfoAsync(); await _client.SetGameAsync(_globalSettings.GetKey("Game")); _logger.Information(LogSource.Geekbot, $"Now Connected as {_client.CurrentUser.Username} to {_client.Guilds.Count} Servers"); @@ -170,7 +171,7 @@ namespace Geekbot.net _servicesProvider = _services.BuildServiceProvider(); await _commands.AddModulesAsync(Assembly.GetEntryAssembly(), _servicesProvider); - var handlers = new Handlers(_databaseInitializer, _client, _logger, _redis, _servicesProvider, _commands, _userRepository, reactionListener); + var handlers = new Handlers(_databaseInitializer, _client, _logger, _redis, _servicesProvider, _commands, _userRepository, reactionListener, applicationInfo); _client.MessageReceived += handlers.RunCommand; _client.MessageDeleted += handlers.MessageDeleted;