Example #1
0
    public void HandleCommand(TwitchClient client, ChatCommand command)
    {
        var key = command.CommandText.ToLower();
        ITwitchCommandHandler handler = null;

        if (handlerLookup.TryGetValue(key, out var handlerType))
        {
            handler = this.ioc.Resolve(handlerType) as ITwitchCommandHandler;
        }
        if (handler == null)
        {
            Debug.LogError("HandleCommand::Unknown Command: " + command.CommandIdentifier + ": " + command.CommandText);
            return;
        }

        handler.Handle(client, command);
    }
        public async Task HandleAsync(IRavenfallServerConnection game, ITwitchCommandClient twitch, ChatCommand command)
        {
            var key = command.CommandText.ToLower();
            ITwitchCommandHandler handler = null;

            if (handlerLookup.TryGetValue(key, out var handlerType))
            {
                handler = ioc.Resolve(handlerType) as ITwitchCommandHandler;
            }
            if (handler == null)
            {
                logger.LogInformation("HandleCommand::Unknown Command: " + command.CommandIdentifier + ": " + command.CommandText);
                return;
            }

            await handler.HandleAsync(game, twitch, command);
        }
        public async Task HandleAsync(ITwitchCommandClient listener, ChatCommand command)
        {
            var key = command.CommandText.ToLower();
            ITwitchCommandHandler handler = null;

            if (handlerLookup.TryGetValue(key, out var handlerType))
            {
                handler = this.ioc.Resolve(handlerType) as ITwitchCommandHandler;
            }
            if (handler == null)
            {
                logger.WriteError("HandleCommand::Unknown Command: " + command.CommandIdentifier + ": " + command.CommandText);
                return;
            }

            await handler.HandleAsync(listener, command);
        }
Example #4
0
        public async Task HandleAsync(IBotServer game, ITwitchCommandClient twitch, OnChannelPointsRewardRedeemedArgs reward)
        {
            //logger.LogInformation("Channel Point Rewards not implemented.");
            var cmd         = "";
            var usedCommand = "";

            try
            {
                var redeemer  = reward.RewardRedeemed.Redemption.User;
                var arguments = string.Empty;//reward.RewardRedeemed.Redemption.Reward.Prompt;
                var command   = reward.RewardRedeemed.Redemption.Reward.Title;
                var cmdParts  = command.ToLower().Split(' ');



                var session = game.GetSession(reward.ChannelId);

                // In case we use brackets to identify a command
                cmd         = cmdParts.FirstOrDefault(x => x.Contains("["));
                usedCommand = cmd;

                if (!string.IsNullOrEmpty(cmd))
                {
                    cmd = cmd.Replace("[", "").Replace("]", "").Trim();
                }

                ITwitchCommandHandler processor = null;

                // if we did not use any brackets
                if (string.IsNullOrEmpty(cmd))
                {
                    foreach (var part in cmdParts)
                    {
                        var proc = FindHandler(part.ToLower());
                        if (proc != null)
                        {
                            processor   = proc;
                            usedCommand = part;
                            break;
                        }
                    }
                }

                // in case we never found a handler, fallback to identifier
                if (processor == null)
                {
                    processor = FindHandler(cmd.ToLower());
                    if (processor == null)
                    {
                        logger.LogError("Error redeeming reward: " + cmd + ", no handler found");
                        return;
                    }

                    usedCommand = cmd;
                }

                if (string.IsNullOrEmpty(arguments))
                {
                    arguments = redeemer.Login;
                }

                //if (processor.RequiresBroadcaster)
                //{
                //    return new RewardRedeemCommand(broadcaster, usedCommand, redeemer.Username);
                //}
                //else
                //{
                //    return new RewardRedeemCommand(redeemer, usedCommand, arguments);
                //}

                RavenBot.Core.Ravenfall.Models.Player player = null;
                if (processor.RequiresBroadcaster)
                {
                    player = session.GetBroadcaster();
                }
                else
                {
                    player = session.Get(new RewardRedeemUser(redeemer));
                    if (player == null)
                    {
                        logger.LogError("Error redeeming reward: " + usedCommand + ", redeemer does not exist. (" + redeemer.Id + ")");
                        return;
                    }
                }

                await processor.HandleAsync(game, twitch, new RewardRedeemCommand(player, reward.ChannelId, usedCommand, arguments));
            }
            catch (Exception exc)
            {
                logger.LogError("Error redeeming reward:  " + usedCommand + ", " + exc.ToString());
            }
        }