private async Task LookupAddressAsync(IncomingMessage incomingMessage, string location) { if (incomingMessage == null) { throw new ArgumentNullException("incomingMessage"); } if (location == null) { throw new ArgumentNullException("location"); } const string googleMapUrl = "http://maps.googleapis.com/maps/api/geocode/json"; using (var client = new HttpClient()) { var uri = string.Format("{0}?address={1}&sensor={2}", googleMapUrl, HttpUtility.UrlEncode(location), true); var response = await client.GetAsync(uri); var body = JsonConvert.DeserializeObject <dynamic>(await response.Content.ReadAsStringAsync()); var coords = body.results[0].geometry.location; var text = await LookupWeatherAsync((decimal)coords.lat, (decimal)coords.lng); await Slack.SendAsync(incomingMessage.ReplyTo(), string.Format("@{0} {1}", incomingMessage.UserName, text)); } }
private async Task VersionAsync(IncomingMessage incomingMessage) { var environmentName = ConfigurationManager.AppSettings["EnvironmentName"]; var version = typeof(IoC).Assembly.GetName().Version.ToString(3); await Slack.SendAsync(incomingMessage.ReplyTo(), string.Format("{0} - {1}", environmentName, version)); }
private async Task GiphyAsync(IncomingMessage incomingMessage, string input) { Exception exception = null; try { if (string.IsNullOrEmpty(input) || input.ToLower().StartsWith("random")) { await Slack.SendAsync(incomingMessage.ReplyTo(), string.Format("@{0} {1}", incomingMessage.UserName, await Random())); return; } var random = new Random(); var results = await Search(input); var max = results.Count(); var image = max <= 0 ? await Random() : results[random.Next(max)]; await Slack.SendAsync(incomingMessage.ReplyTo(), string.Format("@{0} {1}", incomingMessage.UserName, image)); } catch (Exception ex) { exception = ex; } if (exception != null) { var response = string.Format("@{0} Umm... something went wrong \"{1}\" {2}", incomingMessage.UserName, incomingMessage.Text, exception.Message); await Slack.SendAsync(incomingMessage.ReplyTo(), response); } }
private async Task CaptureAsync(IncomingMessage incomingMessage, string resource) { if (string.IsNullOrEmpty(resource)) { await Slack.SendAsync(incomingMessage.ReplyTo(), string.Format("@{0} what are you trying to capture?", incomingMessage.UserName)); return; } string text; object value; if (Brain.TryGetValue(resource, out value) == false) { Brain[resource] = incomingMessage.UserName; text = string.Format("{0} captured by @{1}", resource, incomingMessage.UserName); } else { text = string.Format("@{0} {1} is being held captive by @{2}", incomingMessage.UserName, resource, value); } await Slack.SendAsync(incomingMessage.ReplyTo(), text); }
private async Task SendAsync(IncomingMessage incomingMessage, string replyTo, string input) { var response = incomingMessage.Text.StartsWith(incomingMessage.BotName) ? string.Format("@{0} I speak for myself thank you very much!", incomingMessage.UserName) : input; await Slack.SendAsync(replyTo, response); }
private async Task RespondAsync(IncomingMessage incomingMessage) { var random = new Random(); var responses = GetResponses(); var response = responses[random.Next(responses.Length)]; await Slack.SendAsync(incomingMessage.ReplyTo(), string.Format("@{0} {1}", incomingMessage.UserName, response)); }
public override async Task Handle(IncomingMessage incomingMessage) { var match = Regex.Match(incomingMessage.Text, "foo (.*)", RegexOptions.IgnoreCase); if (match.Length > 0) { await Slack.SendAsync(incomingMessage.ReplyTo(), match.Groups[1].Value); } }
private async Task LoadAsync(IncomingMessage incomingMessage, string input) { var users = new List <string>(); var names = input.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries); users.AddRange(names.Where(name => name.ToLower() != incomingMessage.BotName)); Brain[UsersKey] = string.Join(",", users); var response = string.Format("@{0} users loaded. [{1}]", incomingMessage.UserName, string.Join(", ", users)); await Slack.SendAsync(incomingMessage.ReplyTo(), response); }
private async Task ReleaseAsync(IncomingMessage incomingMessage, string resource) { if (string.IsNullOrEmpty(resource)) { var fields = new List <AttachmentField>(); foreach (var key in Brain.Keys) { fields.Add(new AttachmentField { Value = string.Format("{0} is being held captive by @{1}", key, Brain[key]) }); } await Slack.PostAsync(new Attachment { Channel = incomingMessage.ReplyTo(), Text = "Current inmates", Fields = fields, }); return; } string text; object value; if (Brain.TryGetValue(resource, out value)) { if (value.ToString() == incomingMessage.UserName) { Brain.Remove(resource); text = string.Format("{0} was released by @{1}", resource, incomingMessage.UserName); } else { text = string.Format("@{0} you can't release {1} can only be released by @{2}", incomingMessage.UserName, resource, value); } } else { text = string.Format("@{0} {1} has not been captured", incomingMessage.UserName, resource); } await Slack.SendAsync(incomingMessage.ReplyTo(), text); }
private async Task TurnAsync(IncomingMessage incomingMessage, string input) { var users = new List <string>(); object value; if (Brain.TryGetValue(UsersKey, out value)) { users.AddRange(value.ToString().Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)); } else { await Slack.SendAsync(incomingMessage.ReplyTo(), string.Format("@{0} no users loaded.", incomingMessage.UserName)); return; } var random = new Random(); var user = users[random.Next(users.Count())]; var response = string.Format("@{0} is {1}", user, input); await Slack.SendAsync(incomingMessage.ReplyTo(), response); }
private async Task LoadApiKeyAsync(IncomingMessage incomingMessage, string input) { Brain[ForcastIoApiKey] = input; await Slack.SendAsync(incomingMessage.ReplyTo(), string.Format("@{0} Forcast.io ApiKey set.", incomingMessage.UserName)); }
private async Task LoadApiKeyAsync(IncomingMessage incomingMessage, string input) { Brain[GiphyApiKey] = input; await Slack.SendAsync(incomingMessage.ReplyTo(), string.Format("@{0} Giphy ApiKey Set", incomingMessage.UserName)); }