public async Task Run([Remainder] string code) { string url = null; string error = null; try { url = await _service.UploadCode(Context.Message, code); } catch (WebException ex) { url = null; error = ex.Message; } if (url != null) { var embed = _service.BuildEmbed(Context.User, code, url); await ReplyAsync(Context.User.Mention, false, embed); await Context.Message.DeleteAsync(); } else { await ReplyAsync(error); } }
private async Task <string> UploadLog(IMessage logMessage, IEmote countedEmote, IEnumerable <IUserMessage> messages) { messages = messages.Where(Message => Message.Reactions.ContainsKey(countedEmote)); string allEntries = string.Join('\n', messages.Select(d => $"{d.Reactions[countedEmote].ReactionCount} reactions: {d.GetMessageLink()}")); return(await _pasteService.UploadCode($"All entries for contest held on {DateTimeOffset.UtcNow}\nResults here: {logMessage.GetMessageLink()}\n\n{allEntries}")); }
public static async Task UploadToServiceIfBiggerThan(this EmbedBuilder embed, string content, string contentType, uint size, CodePasteService service) { if (content.Length > size) { try { var resultLink = await service.UploadCode(content, contentType); embed.AddField(a => a.WithName("More...").WithValue($"[View on Hastebin]({resultLink})")); } catch (WebException we) { embed.AddField(a => a.WithName("More...").WithValue(we.Message)); } } }
public void Emit(LogEvent logEvent) { var formattedMessage = logEvent.RenderMessage(_formatProvider); var webhookClient = new DiscordWebhookClient(_webhookId, _webhookToken); var message = new EmbedBuilder() .WithAuthor("DiscordLogger") .WithTitle("Modix") .WithTimestamp(DateTimeOffset.UtcNow) .WithColor(Color.Red) .AddField(new EmbedFieldBuilder() .WithIsInline(false) .WithName($"LogLevel: {logEvent.Level}") .WithValue(Format.Code($"{formattedMessage}\n{logEvent.Exception?.Message}"))); try { var eventAsJson = JsonConvert.SerializeObject(logEvent, _jsonSerializerSettings); var pasteHandler = new CodePasteService(); var url = pasteHandler.UploadCode(eventAsJson, "json").GetAwaiter().GetResult(); message.AddField(new EmbedFieldBuilder() .WithIsInline(false) .WithName("Full Log Event") .WithValue($"[view on paste.mod.gg]({url})")); } catch (Exception ex) { Console.WriteLine($"Unable to upload log event.{ex}"); message.AddField(new EmbedFieldBuilder() .WithIsInline(false) .WithName("Stack Trace") .WithValue(Format.Code($"{formattedMessage}\n{logEvent.Exception?.ToString().TruncateTo(1000)}"))); message.AddField(new EmbedFieldBuilder() .WithIsInline(false) .WithName("Upload Failure Exception") .WithValue(Format.Code($"{ex.ToString().TruncateTo(1000)}"))); } webhookClient.SendMessageAsync(string.Empty, embeds: new[] { message.Build() }, username: "******"); }
private async Task <EmbedBuilder> BuildEmbed(SocketGuildUser guildUser, string code, string result) { var failed = result.Contains("Emit Failed"); string resultLink = null; string error = null; if (result.Length > 990) { try { resultLink = await _pasteService.UploadCode(result); } catch (WebException we) { error = we.Message; } } var embed = new EmbedBuilder() .WithTitle("Decompile Result") .WithDescription(result.Contains("Emit Failed") ? "Failed" : "Successful") .WithColor(failed ? new Color(255, 0, 0) : new Color(0, 255, 0)) .WithAuthor(a => a.WithIconUrl(Context.User.GetAvatarUrl()).WithName(guildUser?.Nickname ?? Context.User.Username)); embed.AddField(a => a.WithName("Code").WithValue(Format.Code(code, "cs"))); embed.AddField(a => a.WithName($"Result:") .WithValue(Format.Code(result.TruncateTo(990), "asm"))); if (resultLink != null) { embed.AddField(a => a.WithName("More...").WithValue($"[View on Hastebin]({resultLink})")); } else if (error != null) { embed.AddField(a => a.WithName("More...").WithValue(error)); } return(embed); }