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); }
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()); } }