public void Process(SlashCommandPayload command) { var character = new NowCharacter(); var reply = new SlashCommandReply(); var action = GetAction(command.text); switch (action) { case NowActions.Checkin: reply.text = GenerateCheckin(); reply.response_type = "in_channel"; break; case NowActions.CreateCharacter: character = GetCharacter(command.team_domain, command.user_name); reply.text = String.Format("Behold {0}, a powerful {1} (Level {2}).\nStr: {3}, Dex: {4}, Con: {5}, Int: {6}, Wis: {7}, Cha: {8}", character.Name, character.Class, character.Level, character.Strength, character.Dexterity, character.Constitution, character.Intelligence, character.Wisdom, character.Charisma); reply.response_type = "in_channel"; break; case NowActions.RerollCharacter: character = RerollCharacter(command.team_domain, command.user_name); reply.text = String.Format("{0} has rerolled {1} and returned to level {2}.\nStr: {3}, Dex: {4}, Con: {5}, Int: {6}, Wis: {7}, Cha: {8}", character.Name, character.Class, character.Level, character.Strength, character.Dexterity, character.Constitution, character.Intelligence, character.Wisdom, character.Charisma); reply.response_type = "in_channel"; break; case NowActions.Help: reply.text = "/rpg..... Create or show off your character\n/rpg reroll..... Reset your character, class, stats and level\n/rpg leaderboard..... List top 10 characters on your server\n/rpg fight {name}..... Fight your character against {name}\n/rpg help..... Show this list of commands"; reply.response_type = "ephemeral"; break; case NowActions.Leaderboard: reply.text = GetLeaderboard(command.team_domain); reply.response_type = "ephemeral"; break; case NowActions.Fight: character = GetCharacter(command.team_domain, command.user_name); reply.text = Fight(command.team_domain, character.Name, command.text); reply.response_type = reply.text == "Opponent not found." ? "ephemeral" : "in_channel"; break; case NowActions.Error: default: reply.text = "Error in command string."; reply.response_type = "ephemeral"; break; } SendPost(reply, command.response_url); }
private async void SendPost(SlashCommandReply reply, string url) { var json = JsonConvert.SerializeObject(reply); var content = new StringContent(json, UnicodeEncoding.UTF8, "application/json"); await _client.PostAsync(url, content); }