public async Task ReplInvoke([Remainder] string code) { if (!(Context.Channel is SocketGuildChannel)) { await ReplyAsync("il can only be executed in public guild channels."); return; } code = FormatUtilities.StipFormatting(code); if (code.Length > 1000) { await ReplyAsync("Decompile Failed: Code is greater than 1000 characters in length"); return; } var guildUser = Context.User as SocketGuildUser; var message = await Context.Channel.SendMessageAsync("Working..."); var content = FormatUtilities.BuildContent(code); HttpResponseMessage res; try { var tokenSrc = new CancellationTokenSource(30000); res = await _client.PostAsync(ReplRemoteUrl, content, tokenSrc.Token); } catch (TaskCanceledException) { await message.ModifyAsync(a => { a.Content = $"Gave up waiting for a response from the Decompile service."; }); return; } catch (Exception ex) { await message.ModifyAsync(a => { a.Content = $"Decompile failed: {ex.Message}"; }); Log.Error(ex, "Decompile Failed"); return; } if (!res.IsSuccessStatusCode & res.StatusCode != HttpStatusCode.BadRequest) { await message.ModifyAsync(a => { a.Content = $"Decompile failed: {res.StatusCode}"; }); return; } var parsedResult = await res.Content.ReadAsStringAsync(); var embed = await BuildEmbed(guildUser, code, parsedResult); await message.ModifyAsync(a => { a.Content = string.Empty; a.Embed = embed.Build(); }); await Context.Message.DeleteAsync(); }