Beispiel #1
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            Response response = new Response
            {
                Embed        = EmbedUtility.ToEmbed(Help),
                Message      = Help,
                ResponseType = ResponseType.Default
            };

            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);

            string commandDetail = command.CommandDetail;

            response = waitHandler.CreatePleaseWaitResponse(senderDetail.ServerSettings.Language);

            Task.Run(async() =>
            {
                Response asyncResponse = await BuildMemeAsync(senderDetail.ServerSettings.Language, args);
                if (asyncResponse == null)
                {
                    string err    = ($"{Emojis.NoEntry} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_NoImageMessages")}");
                    asyncResponse = new Response
                    {
                        Embed        = EmbedUtility.ToEmbed(err),
                        Message      = err,
                        ResponseType = ResponseType.Default
                    };
                }
                await asyncResponder.SendResponseAsync(args, asyncResponse);
                waitHandler.PopPleaseWaitMessage();
            });

            return(new[] { response });
        }
Beispiel #2
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);

            return(Response.CreateArrayFromString(AddZalgo(command.CommandDetail)));
        }
Beispiel #3
0
 //ctor
 public InsertDispatchHistoryCommand(SenderSettings senderSettings, ISignalDispatchHistoryQueries <TKey> historyQueries,
                                     IEventSettingsQueries <TKey> eventSettingsQueries)
     : base(senderSettings)
 {
     _eventSettingsQueries            = eventSettingsQueries;
     _flushQueues[FlushAction.Insert] = new FlushQueue <SignalDispatch <TKey> >(items => historyQueries.InsertMany(items));
 }
 //init
 public DirectSignalProvider(IEventQueue <TKey> eventQueues, IDispatchQueue <TKey> dispatchQueues,
                             IMonitor <TKey> eventSink, ISignalEventQueries <TKey> eventQueries,
                             ISignalDispatchQueries <TKey> dispatchQueries, SenderSettings senderSettings)
     : base(eventQueues, dispatchQueues, eventSink, eventQueries, dispatchQueries, senderSettings)
 {
     _isStarted = false;
 }
        public static void AddIntegrations(this IServiceCollection services, IConfiguration configuration)
        {
            var senderSection = configuration.GetSection("Integration").GetSection("Sender");
            var brokerSection = configuration.GetSection("Integration").GetSection("Broker");

            bool.TryParse(senderSection["Durable"], out var durable);
            var queueSettings = new SenderSettings
            {
                Queue        = senderSection["Queue"],
                Durable      = durable,
                ExchangeType = senderSection["ExchangeType"],
                Exchange     = senderSection["Exchange"]
            };
            var brokerSettings = new BrokerSettings
            {
                Host     = brokerSection["Host"],
                Port     = int.Parse(brokerSection["Port"]),
                User     = brokerSection["User"],
                Password = brokerSection["Password"]
            };

            services.AddScoped((provider) =>
            {
                return(new QueueSender(queueSettings, brokerSettings));
            });
            services.AddScoped <AdministrationNotifier>();
            services.AddScoped <GivingPromoCodeToCustomerNotifier>();
        }
Beispiel #6
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);

            if (Constants.IsBotOwner(args.UserId))
            {
                Task.Run(async() =>
                {
                    string name = command.CommandDetail;
                    if (args.ChannelId != Constants.ConsoleId)
                    {
                        var guild = await client.GetGuildAsync(args.GuildId).ConfigureAwait(false);
                        var user  = guild.GetUser(client.CurrentUser.Id);
                        await user.ModifyAsync(x => x.Nickname = name).ConfigureAwait(false);
                    }
                    else
                    {
                        Console.Title = name;
                    }
                });
                return(new Response[] { Response.CreateFromReact(Emojis.ThumbsUpUnicode) });
            }
            else
            {
                return(Response.CreateArrayFromString($"{Emojis.CrossSymbol} {languageHandler.GetPhrase(serverSettings.Language, "Error_BotOwnerOnly")}."));
            }
        }
        public override int GetHashCode()
        {
            int hash = 1;

            if (Tag.Length != 0)
            {
                hash ^= Tag.GetHashCode();
            }
            if (senderSettings_ != null)
            {
                hash ^= SenderSettings.GetHashCode();
            }
            if (proxySettings_ != null)
            {
                hash ^= ProxySettings.GetHashCode();
            }
            if (Expire != 0L)
            {
                hash ^= Expire.GetHashCode();
            }
            if (Comment.Length != 0)
            {
                hash ^= Comment.GetHashCode();
            }
            if (_unknownFields != null)
            {
                hash ^= _unknownFields.GetHashCode();
            }
            return(hash);
        }
 //ctor
 public CheckLockExpirationCommand(ILockTracker <TKey> lockTracker, ISignalDispatchQueries <TKey> dispatchQueries,
                                   SenderSettings settings)
 {
     _lockTracker     = lockTracker;
     _dispatchQueries = dispatchQueries;
     _settings        = settings;
 }
Beispiel #9
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);

            // First, substitute the variables.
            string message = VariableStrings.Replace(command.CommandDetail, args.Username, args.UserId.ToString(), args.GuildName, command.CommandDetail);

            if (string.IsNullOrWhiteSpace(message))
            {
                // Use the command's name instead.
                message = command.FullCommandExcludingCommandPrefix;
            }

            // Shrug.
            message = message.StripAccents();

            // Now substitute the replacements from the table.
            StringBuilder sb = new StringBuilder();

            foreach (char c in message)
            {
                string letter = c.ToString();
                foreach (var replacementPair in replaceTable)
                {
                    letter = letter.Replace(replacementPair.Key, replacementPair.Value, (ignoreCase ? StringComparison.OrdinalIgnoreCase : StringComparison.Ordinal));

                    // If a replacement was made.
                    if (letter != c.ToString())
                    {
                        break;
                    }
                }
                sb.Append(letter);
            }

            string          output    = reverse ? new string(sb.ToString().Reverse().ToArray()) : sb.ToString();
            List <Response> responses = new List <Response>
            {
                new Response
                {
                    Embed        = null,
                    Message      = output,
                    ResponseType = ResponseType.Default
                }
            };

            if (doTTS)
            {
                responses.Add(
                    new Response
                {
                    Embed        = null,
                    Message      = output,
                    ResponseType = ResponseType.Default_TTS
                }
                    );
            }
            return(responses.ToArray());
        }
        //init
        public SubscribersFetcher(ILogger logger, SenderSettings senderSettings
                                  , ISubscriberQueries <TKey> subscriberQueries)
        {
            _logger            = logger;
            _subscriberQueries = subscriberQueries;

            ItemsQueryLimit = senderSettings.SubscribersFetcherItemsQueryLimit;
        }
Beispiel #11
0
        internal IList <Response> ExecuteCommand(SenderSettings senderDetail, IMessageDetail messageDetail)
        {
            List <Response>      responses = new List <Response>();
            CommandMessageHelper helper    = new CommandMessageHelper(senderDetail.ServerSettings.CommandSymbol, messageDetail.Message);

            Languages currentLanguage = senderDetail.ServerSettings.Language;

            // If we're running default, assume English.
            if (currentLanguage == Languages.Default)
            {
                currentLanguage = Languages.English;
            }

            if (helper.IsCommand || messageDetail.IsPrivate)
            {
                // Check language specific commands.
                foreach (Command command in commands[currentLanguage])
                {
                    if (command.Aliases.Contains(helper.CommandLower, StringComparer.OrdinalIgnoreCase) || command.NoSetAlias)
                    {
                        responses.AddRange(command.Execute(senderDetail, messageDetail));
                    }
                }

                // Then check defaults.
                foreach (Command command in commands[Languages.Default])
                {
                    if (command.Aliases.Contains(helper.CommandLower, StringComparer.OrdinalIgnoreCase) || command.NoSetAlias)
                    {
                        responses.AddRange(command.Execute(senderDetail, messageDetail));
                    }
                }
            }
            else
            {
                // Check only commands that do not require a command symbol.
                // Check language specific commands.
                foreach (Command command in commands[currentLanguage].Where(c => !c.RequiresSymbol))
                {
                    if (command.Aliases.Contains(helper.CommandLower, StringComparer.OrdinalIgnoreCase) || command.NoSetAlias)
                    {
                        responses.AddRange(command.Execute(senderDetail, messageDetail));
                    }
                }

                // Then check defaults.
                foreach (Command command in commands[Languages.Default].Where(c => !c.RequiresSymbol))
                {
                    if (command.Aliases.Contains(helper.CommandLower, StringComparer.OrdinalIgnoreCase) || command.NoSetAlias)
                    {
                        responses.AddRange(command.Execute(senderDetail, messageDetail));
                    }
                }
            }

            return(responses);
        }
Beispiel #12
0
 //ctor
 public CheckConsolidationLockExpirationCommand(IConsolidationLockTracker <TKey> lockTracker,
                                                IConsolidationLockQueries <TKey> consolidationLockQueries, SenderSettings settings,
                                                IDispatchQueue <TKey> dispatchQueue)
 {
     _consolidationLockTracker = lockTracker;
     _consolidationLockQueries = consolidationLockQueries;
     _settings      = settings;
     _dispatchQueue = dispatchQueue;
 }
        //init
        public FlushJobBase(SenderSettings senderSettings)
        {
            FlushPeriod       = senderSettings.FlushJobFlushPeriod;
            QueueLimit        = senderSettings.FlushJobQueueLimit;
            IsBatchingEnabled = senderSettings.FlushJobBatchingEnabled;

            //how to flush items
            _flushQueues = new Dictionary <FlushAction, FlushQueue <T> >();
        }
Beispiel #14
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);
            string requestStr = command.CommandDetail;
            ulong  requestedId;

            if (string.IsNullOrWhiteSpace(requestStr))
            {
                // Default to the user asking.
                requestedId = args.UserId;
            }
            else
            {
                // Parse a mention?
                if (requestStr.StartsWith("<@") && requestStr.EndsWith(">"))
                {
                    requestStr = requestStr.Substring("<@".Length, requestStr.Length - 3); // Minus 3 for <@nnnnn>
                }

                // Id?
                if (!ulong.TryParse(requestStr, out requestedId))
                {
                    // No, fail.
                    return(Response.CreateArrayFromString($"{Emojis.CrossSymbol} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_NoResults")}: {requestStr}"));
                }
            }

            if (client != null)
            {
                Task.Run(async() =>
                {
                    // From the id, determine if it's a user or server.
                    // Is it a server?
                    var candidateServer = await client.GetGuildAsync(requestedId).ConfigureAwait(false);
                    if (candidateServer != null)
                    {
                        await asyncResponder.SendResponseAsync(args, Response.CreateFromString($"{candidateServer.IconUrl}")).ConfigureAwait(false);
                    }

                    // Is it a channel?
                    IChannel candidateChannel = await client.GetDMChannelAsync(requestedId).ConfigureAwait(false);
                    if (candidateChannel != null)
                    {
                        await asyncResponder.SendResponseAsync(args, Response.CreateFromString($"{candidateChannel.GetGuild().IconUrl}")).ConfigureAwait(false);
                    }

                    // Is it a user?
                    IUser candidateUser = client.GetUser(requestedId);
                    if (candidateUser != null)
                    {
                        await asyncResponder.SendResponseAsync(args, Response.CreateFromString($"{candidateUser.GetAvatarUrl(ImageFormat.Auto, 2048)}")).ConfigureAwait(false);
                    }
                });
            }
            return(new Response[] { Response.WaitForAsync });
        }
Beispiel #15
0
 //init
 public BaseSignalProvider(IEventQueue <TKey> eventQueue, IDispatchQueue <TKey> dispatchQueue, IMonitor <TKey> eventSink,
                           ISignalEventQueries <TKey> eventQueries, ISignalDispatchQueries <TKey> dispatchQueries, SenderSettings senderSettings)
 {
     _eventQueue      = eventQueue;
     _dispatchQueue   = dispatchQueue;
     _monitor         = eventSink;
     _eventQueries    = eventQueries;
     _dispatchQueries = dispatchQueries;
     _senderSettings  = senderSettings;
 }
Beispiel #16
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);

            StringBuilder sb        = new StringBuilder();
            string        charArray = command.CommandDetail.StripAccents();
            int           length    = charArray.Length;

            if (length > 80)
            {
                string err = ($"{Emojis.NoEntry} {languageHandler.GetPhrase(serverSettings.Language, "Error_NotAFile")}");
                sb.AppendLine(err);
            }
            else
            {
                sb.AppendLine();
                foreach (char c in charArray)
                {
                    if (char.IsLetterOrDigit(c))
                    {
                        sb.Append(":regional_indicator_").Append(char.ToLowerInvariant(c)).Append(": ");
                    }
                    else if (c == ' ')
                    {
                        sb.Append(":blue_heart: ");
                    }
                    else if (c == '!')
                    {
                        sb.Append(":grey_exclamation: ");
                    }
                    else if (c == '?')
                    {
                        sb.Append(":grey_question: ");
                    }
                    else if (c == '\'')
                    {
                        sb.Append(":arrow_down_small: ");
                    }
                    else
                    {
                        sb.Append(c);
                    }
                }

                sb.AppendLine();

                foreach (char _ in charArray)
                {
                    sb.Append(Emojis.CheerleaderSymbols[rand.Next(0, Emojis.CheerleaderSymbols.Count)]).Append(' ');
                }
            }

            return(Response.CreateArrayFromString(sb.ToString()));
        }
Beispiel #17
0
 //init
 public SignalServiceInstanceProvider(IEventQueue <TKey> eventQueues, IDispatchQueue <TKey> dispatchQueues,
                                      IMonitor <TKey> eventSink, ISignalEventQueries <TKey> eventQueries,
                                      ISignalDispatchQueries <TKey> dispatchQueries, SenderSettings senderSettings)
 {
     _eventQueues     = eventQueues;
     _dispatchQueues  = dispatchQueues;
     _monitor         = eventSink;
     _eventQueries    = eventQueries;
     _dispatchQueries = dispatchQueries;
     _senderSettings  = senderSettings;
 }
        /// <summary>
        /// 	c'tor taking settings to configure the endpoint with
        /// </summary>
        public TransportFactoryImpl(ReceiverSettings receiverSettings, SenderSettings senderSettings)
        {
            _addresses = new ReaderWriterLockedDictionary<Uri, IAzureServiceBusEndpointAddress>();
            _connCache = new ReaderWriterLockedDictionary<Uri, ConnectionHandler<AzureServiceBusConnection>>();
            _formatter = new AzureServiceBusMessageNameFormatter();

            _receiverSettings = receiverSettings;
            _senderSettings = senderSettings;

            _logger.Debug("created new transport factory");
        }
Beispiel #19
0
        /// <summary>
        ///     c'tor taking settings to configure the endpoint with
        /// </summary>
        public TransportFactoryImpl(ReceiverSettings receiverSettings, SenderSettings senderSettings)
        {
            _addresses = new ReaderWriterLockedDictionary <Uri, AzureServiceBusEndpointAddress>();
            _connCache = new ReaderWriterLockedDictionary <Uri, ConnectionHandler <ConnectionImpl> >();
            _formatter = new AzureMessageNameFormatter();

            _receiverSettings = receiverSettings;
            _senderSettings   = senderSettings;

            _logger.Debug("created new transport factory");
        }
Beispiel #20
0
 public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
 {
     if (Constants.IsBotOwner(senderDetail.UserSettings.UserId))
     {
         controller.Initialise();
         return(new Response[] { Response.CreateFromReact(Emojis.SoonUnicode) });
     }
     else
     {
         return(Response.CreateArrayFromString($"{Emojis.CrossSymbol} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_BotOwnerOnly")}."));
     }
 }
Beispiel #21
0
        //init
        public DatabaseEventProvider(IEventQueue <TKey> eventQueue, IMonitor <TKey> eventSink
                                     , SenderSettings senderSettings, ISignalEventQueries <TKey> eventQueries, ILogger logger)
        {
            _eventQueue   = eventQueue;
            _monitor      = eventSink;
            _eventQueries = eventQueries;
            _logger       = logger;

            QueryPeriod       = senderSettings.DatabaseSignalProviderQueryPeriod;
            ItemsQueryCount   = senderSettings.DatabaseSignalProviderItemsQueryCount;
            MaxFailedAttempts = senderSettings.DatabaseSignalProviderItemsMaxFailedAttempts;
        }
        //init
        public SignalEventFlushJob(SenderSettings senderSettings, ITemporaryStorage <SignalEvent <TKey> > temporaryStorage
                                   , ISignalEventQueries <TKey> queries)
            : base(senderSettings, temporaryStorage, queries)
        {
            FlushPeriod = senderSettings.FlushJobFlushPeriod;
            QueueLimit  = senderSettings.FlushJobQueueLimit;
            IsTemporaryStorageEnabled = senderSettings.SignalQueueIsTemporaryStorageEnabled;

            _temporaryStorageParameters = new TemporaryStorageParameters()
            {
                QueueType     = NotificationsConstants.TS_EVENT_QUEUE_KEY,
                EntityVersion = NotificationsConstants.TS_ENTITIES_VERSION
            };
        }
Beispiel #23
0
        //init
        public DispatchProcessor(SenderState <TKey> hubState, IDispatchQueue <TKey> dispatchQueue,
                                 ILogger logger, SenderSettings senderSettings, IDispatchChannelRegistry <TKey> channelRegistry,
                                 IEnumerable <IDispatchProcessingCommand <TKey> > processingCommands)
            : base(logger)
        {
            _hubState           = hubState;
            _dispatchQueue      = dispatchQueue;
            _channelRegistry    = channelRegistry;
            _processingCommands = processingCommands
                                  .OrderBy(x => x.Order)
                                  .ToArray();

            MaxParallelItems = senderSettings.MaxParallelDispatchesProcessed;
        }
Beispiel #24
0
        //init
        public EventProcessor(SenderState <TKey> hubState, IMonitor <TKey> eventSink
                              , ILogger logger, SenderSettings senderSettings
                              , IEventQueue <TKey> eventQueue, IDispatchQueue <TKey> dispatchQueue
                              , IEventHandlerRegistry <TKey> handlerRegistry, IEventSettingsQueries <TKey> eventSettingsQueries)
            : base(logger)
        {
            _hubState             = hubState;
            _monitor              = eventSink;
            _eventQueue           = eventQueue;
            _dispatchQueue        = dispatchQueue;
            _handlerRegistry      = handlerRegistry;
            _eventSettingsQueries = eventSettingsQueries;

            MaxParallelItems = senderSettings.MaxParallelEventsProcessed;
        }
		/// <summary>
		/// 	c'tor
		/// </summary>
		public OutboundTransportImpl(
			[NotNull] AzureServiceBusEndpointAddress address,
			[NotNull] ConnectionHandler<ConnectionImpl> connectionHandler, 
			[NotNull] SenderSettings settings)
		{
			if (address == null) throw new ArgumentNullException("address");
			if (connectionHandler == null) throw new ArgumentNullException("connectionHandler");
			if (settings == null) throw new ArgumentNullException("settings");

			_connectionHandler = connectionHandler;
			_settings = settings;
			_address = address;

			_logger.DebugFormat("created outbound transport for address '{0}'", address);
		}
Beispiel #26
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);
            string responseMessage;

            if (Constants.IsBotOwner(args.UserId))
            {
                string channelIdStr = command.CommandParams[1];
                if (!string.IsNullOrWhiteSpace(channelIdStr))
                {
                    bool parsed = ulong.TryParse(channelIdStr, out ulong targetChannelId);
                    if (parsed)
                    {
                        string messageToSend = string.Join(" ", command.CommandParams, 2, command.CommandParams.Length - 2);
                        if (string.IsNullOrEmpty(messageToSend))
                        {
                            responseMessage = ($"{Emojis.CrossSymbol} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_IncorrectParameter")}: say <channel id> <message> -- message");
                        }
                        else
                        {
                            if (asyncResponder.SendResponse(targetChannelId, Response.CreateFromString(messageToSend)))
                            {
                                responseMessage = ($"{Emojis.TickSymbol} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "YourRequestHasBeenSent")}: {messageToSend} --> {channelIdStr}");
                            }
                            else
                            {
                                responseMessage = ($"{Emojis.CrossSymbol} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_NoResults")}: {channelIdStr}");
                            }
                        }
                    }
                    else
                    {
                        responseMessage = ($"{Emojis.CrossSymbol} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_IncorrectParameter")}: say <channel id> <message> -- {channelIdStr}");
                    }
                }
                else
                {
                    responseMessage = $"{Emojis.CrossSymbol} say <channel id> <message>.";
                }
            }
            else
            {
                responseMessage = $"{Emojis.CrossSymbol} {languageHandler.GetPhrase(serverSettings.Language, "Error_BotOwnerOnly")}.";
            }

            return(Response.CreateArrayFromString(responseMessage));
        }
Beispiel #27
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            StringBuilder        retVal         = new StringBuilder();
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);

            string[]      commandParams = command.CommandParams;
            Command[]     commands      = commandController.GetCommandsForLanguage(senderDetail.ServerSettings.Language);
            Discord.Color responseColor = Discord.Color.Green;

            if (string.IsNullOrWhiteSpace(command.CommandDetail))
            {
                var commandsByModule = commands.GroupBy(x => x.Module).ToDictionary(grouping => grouping.Key, grouping => grouping.ToList());
                foreach (var pair in commandsByModule)
                {
                    retVal.Append("**");
                    retVal.Append(pair.Key.ToString());
                    retVal.AppendLine("**");
                    retVal.AppendLine(string.Join(", ", pair.Value.Select(c => c.Aliases[0])));
                    retVal.AppendLine();
                }
            }
            else
            {
                string  search = command.CommandArgs.First().ToLowerInvariant();
                Command found  = commands.FirstOrDefault(c => c.Aliases.Contains(search, StringComparer.OrdinalIgnoreCase));
                if (found != null)
                {
                    retVal.AppendLine(found.Help + "\r\n" + found.Examples);
                }
                else
                {
                    retVal.AppendLine($"{Emojis.QuestionSymbol} {languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Error_IncorrectParameter")}");
                    responseColor = Discord.Color.Red;
                }
            }

            string   message  = retVal.ToString();
            Response response = new Response
            {
                Embed        = Utility.EmbedUtility.ToEmbed(message, responseColor),
                Message      = message,
                ResponseType = ResponseType.Default
            };

            return(new[] { response });
        }
Beispiel #28
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);

            string choice = choices[rand.Next(choices.Length)];
            string result = VariableStrings.Replace(choice, args.Username, args.UserId.ToString(), args.GuildName, command.CommandDetail);

            Response response = new Response
            {
                Embed        = null,
                Message      = result,
                ResponseType = responseType
            };

            return(new[] { response });
        }
Beispiel #29
0
        //init
        public EventQueue(SenderSettings senderSettings, ITemporaryStorage <SignalEvent <TKey> > temporaryStorage
                          , ISignalFlushJob <SignalEvent <TKey> > signalFlushJob, ILogger logger)
            : base(temporaryStorage)
        {
            _signalFlushJob = signalFlushJob;
            _logger         = logger;

            PersistBeginOnItemsCount  = senderSettings.SignalQueuePersistBeginOnItemsCount;
            PersistEndOnItemsCount    = senderSettings.SignalQueuePersistEndOnItemsCount;
            IsTemporaryStorageEnabled = senderSettings.SignalQueueIsTemporaryStorageEnabled;

            _temporaryStorageParameters = new TemporaryStorageParameters()
            {
                QueueType     = NotificationsConstants.TS_EVENT_QUEUE_KEY,
                EntityVersion = NotificationsConstants.TS_ENTITIES_VERSION
            };
        }
        //init
        public DatabaseDispatchProvider(IDispatchQueue <TKey> dispatchQueue, IMonitor <TKey> eventSink, SenderSettings senderSettings,
                                        IDispatchChannelRegistry <TKey> dispatcherRegistry, ISignalDispatchQueries <TKey> dispatchQueries, ILogger logger,
                                        ILockTracker <TKey> lockTracker, IConsolidationLockTracker <TKey> consolidationLockTracker)
        {
            _dispatchQueue            = dispatchQueue;
            _monitor                  = eventSink;
            _dispatcherRegistry       = dispatcherRegistry;
            _dispatchQueries          = dispatchQueries;
            _logger                   = logger;
            _lockTracker              = lockTracker;
            _consolidationLockTracker = consolidationLockTracker;
            _senderSettings           = senderSettings;

            QueryPeriod       = senderSettings.DatabaseSignalProviderQueryPeriod;
            ItemsQueryCount   = senderSettings.DatabaseSignalProviderItemsQueryCount;
            MaxFailedAttempts = senderSettings.DatabaseSignalProviderItemsMaxFailedAttempts;
        }
Beispiel #31
0
        public override IList <Response> Execute(SenderSettings senderDetail, IMessageDetail args)
        {
            ServerSettings       serverSettings = senderDetail.ServerSettings;
            UserSettings         userSettings   = senderDetail.UserSettings;
            CommandMessageHelper command        = new CommandMessageHelper(serverSettings.CommandSymbol, args.Message);

            string[] commandParams = command.CommandParams;

            var allAchievements      = SaveData.Achievements.Achievement.AllAchievements;
            var unlockedAchievements = userSettings.UserStats.GetAchievements();

            // First, reply to the room that the command was written in.
            // This has minimal information so as to not spoil achievements
            // for other users.
            string   outputToChannel = ($"{languageHandler.GetPhrase(senderDetail.ServerSettings.Language, "Achievements_AchievementsUnlocked")}: {unlockedAchievements.Count}/{allAchievements.Count} {Emojis.Trophy}");
            Response channelResponse = new Response
            {
                Embed        = Utility.EmbedUtility.ToEmbed(outputToChannel, 200, 200, 50),
                ResponseType = ResponseType.Default
            };

            // Next, PM the user their achievements and any still to unlock.
            StringBuilder sb = new StringBuilder();

            foreach (var achievement in allAchievements)
            {
                if (achievement.HasAchieved(userSettings.UserStats))
                {
                    sb.AppendLine($"{Emojis.Trophy} {achievement.GetDescription(languageHandler, senderDetail.ServerSettings.Language)}");
                }
                else
                {
                    sb.AppendLine($"???");
                }
            }

            string   outputToPrivate = sb.ToString();
            Response privateResponse = new Response
            {
                Embed        = Utility.EmbedUtility.ToEmbed(outputToPrivate, 200, 200, 50),
                ResponseType = ResponseType.Private
            };

            return(new[] { channelResponse, privateResponse });
        }
Beispiel #32
0
        //init
        public SignalFlushJobBase(SenderSettings senderSettings, ITemporaryStorage <TSignal> temporaryStorage, ISignalQueries <TSignal> queries)
            : base(senderSettings)
        {
            _temporaryStorage = temporaryStorage;
            _queries          = queries;

            //how to flush items
            new List <FlushAction>
            {
                FlushAction.Insert,
                FlushAction.Update,
                FlushAction.DeleteOne
            }
            .ForEach(action => _flushQueues[action] = new FlushQueue <SignalWrapper <TSignal> >(items => MakeQuery(items, action)));

            //what to do after flushing
            _flushedItemsHandlers.Add(RemovedFlushedFromTempStorage);
        }