private void SendRaport() { var embed = new Discord.EmbedBuilder(); embed.WithTitle($"Results of the battle in __**{this.attackedSystem}**__"); embed.WithColor(new Discord.Color(255, 0, 0)); embed.WithCurrentTimestamp(); embed.AddField("Time of battle", $"From: {this.encounterStart.ToString("T")}\nTo: {this.lastNotification.ToString("T")}\nTotal: {this.GetEncounterTime().ToString(@"hh\:mm\:ss")}", false); embed.AddField("Statistics", $"Total number of characters attacking: {this.attackingPlayers.Count}\nTotal number of teams attacking: {this.attackingTeams.Count}\nNumber of messages: {this.totalMessageAmount}", false); embed.AddField("Players attacking", string.Join("\n", this.attackingPlayers.ToArray()), false); embed.AddField("Teams attacking", string.Join("\n", this.attackingTeams.ToArray()), false); _ = this.discordApi.EmbedObjectAsync(this.channelID, embed.Build(), true); }
private async Task SalesNotification(UserContext userContext, Vender vender, VenderSale venderSale) { var builder = new Discord.EmbedBuilder(); builder .WithTitle($"{vender.Title} 【購入】") .WithUrl($"{StaticSettings.SiteBaseUrl}Venders/Details?id={vender.Id}") .WithAuthor( userContext.CurrentUser.Name, userContext.CurrentUser.GetAvaterIconUrl(), userContext.CurrentUser.GetMemberPageUrl(StaticSettings.SiteBaseUrl) ) .AddField("金額", $"{venderSale.Amount}{StaticSettings.CurrenryUnit}", false); if (!string.IsNullOrEmpty(venderSale.Message)) { builder .AddField("メッセージ", venderSale.Message, false); } var messageTargets = new[] { vender.VetMember }; await CoreService.SendDirectMessage(messageTargets, string.Empty, builder.Build()); }
private async Task ErrorAsync(string message) { Discord.EmbedBuilder embed = new Discord.EmbedBuilder(); embed.Title = "whois Command Error"; embed.Description = "An error has occurred trying to execute your command."; embed.AddField("Error Message", message); await ReplyAsync(null, false, embed.Build()); }
public async Task GetUInfoAsync(SocketGuildUser user = null) { // Makes a default value for the user the bot gets info for if the command was given no user. var userGet = user ?? Context.User as SocketGuildUser; // Creates new EmbedBuilder. var userInfo = new Discord.EmbedBuilder() { Title = $"Info about **{userGet.Username}**", ThumbnailUrl = userGet.GetAvatarUrl() ?? userGet.GetDefaultAvatarUrl(), Color = Discord.Color.Green }; // Adds fields containing various types of information about the user. userInfo.AddField("Username & Discriminator", userGet.Username + "#" + userGet.Discriminator, true); userInfo.AddField("Nickname", userGet.Nickname ?? "None", true); userInfo.AddField("Account Created At", userGet.CreatedAt.DateTime.ToString(), true); userInfo.AddField("Joined Server At", userGet.JoinedAt.Value.DateTime.ToString(), true); if (userGet.Status != Discord.UserStatus.DoNotDisturb) { userInfo.AddField("Status", userGet.Status.ToString(), true); } else { userInfo.AddField("Status", "Do Not Disturb", true); } userInfo.AddField("Bot", userGet.IsBot ? "Yes" : "No", true); // Posts the embed to the channel. await ReplyAsync("", false, userInfo.Build()); }
public async Task AboutAsync() { Discord.EmbedBuilder embed = new Discord.EmbedBuilder(); embed.Title = "Master Spriggans"; embed.Description = "The provider of callouts to all those in need."; embed.AddField("About Me", "I'm a discord bot. I'm not ready for use yet, but I will be soon."); embed.ThumbnailUrl = _renaThumbnail; await ReplyAsync(null, false, embed.Build()); }
public static async Task <Discord.EmbedBuilder> AddFieldAsync(this Discord.EmbedBuilder builder, Func <Discord.EmbedFieldBuilder, Task> fieldBuilder) { var field = new Discord.EmbedFieldBuilder(); await fieldBuilder(field).ConfigureAwait(false); builder.AddField(field); return(builder); }
private async Task SendConfirmNotificationAsync(ExteralApplication app, VetMember user, ExteralApplicationPayment eap) { Discord.EmbedBuilder builder = new Discord.EmbedBuilder(); builder.WithTitle($"{app.Name}:購入確認"); builder.WithUrl(app.CallbackUrl + $"?id={eap.Id}"); builder.WithAuthor(app.VetMember.Name, app.VetMember.GetAvaterIconUrl(), app.VetMember.GetMemberPageUrl(StaticSettings.SiteBaseUrl)); builder.AddField("金額", eap.Amount); builder.WithDescription(eap.Description); builder.WithFooter("よろしければ、タイトルをクリックして購入処理をつづけてください"); await CoreService.SendDirectMessage(new[] { user }, string.Empty, builder.Build()); }
public Discord.Embed FormatPlay(PlayFile playFile) { var game = playFile.Games.FirstOrDefault(); var location = playFile.Locations.FirstOrDefault(); var play = playFile.Plays.FirstOrDefault(); var playerScores = play?.PlayerScores; var players = playFile.Players; var builder = new Discord.EmbedBuilder() .WithTitle(game?.Name ?? "None") .WithDescription(BuildDescription(location, play)) .WithFooter(BuildFooter(game)) .WithThumbnailUrl(game.UrlThumb) .WithColor(Discord.Color.Green); if (DateTimeOffset.TryParse(play.EntryDate, out DateTimeOffset timestamp)) { builder.WithTimestamp(timestamp.ToLocalTime()); } if (play.UsesTeams) { var teams = playerScores.GroupBy(x => x.Team).OrderBy(g => g.Key); var i = 1; foreach (var team in teams) { var teamWon = team.Any(x => x.Winner); var teamName = $"\r\nTeam {i++}{(teamWon ? " :trophy:" : "")}"; var sb = new StringBuilder(); foreach (var playerScore in team) { var playerData = players.FirstOrDefault(x => x.Id == playerScore.PlayerRefId); if (playerData == null) { continue; } sb.AppendLine($"{playerData.Name}{(string.IsNullOrEmpty(playerScore.Score) ? "" : $" - {playerScore.Score}")}"); sb.AppendLine($"```{(string.IsNullOrEmpty(playerScore.TeamRole) ? "" : $"Role: {playerScore.TeamRole}\r\n")}BGG: {(string.IsNullOrEmpty(playerData.BggUsername) ? "Not set" : playerData.BggUsername)}```"); } builder.AddField(x => { x.Name = teamName; x.Value = sb.ToString(); }); } }
private async Task DeliveryMessage(UserContext userContext, Vender vender, VenderSale venderSale) { var builder = new Discord.EmbedBuilder(); builder .WithTitle($"{vender.Title} 【購入】") .WithUrl($"{StaticSettings.SiteBaseUrl}Venders/Details?id={vender.Id}") .WithAuthor( userContext.CurrentUser.Name, userContext.CurrentUser.GetAvaterIconUrl(), userContext.CurrentUser.GetMemberPageUrl(StaticSettings.SiteBaseUrl) ) .AddField("金額", $"{venderSale.Amount}{StaticSettings.CurrenryUnit}", false); //.AddField("メッセージ", venderSale.Message, false); if (!string.IsNullOrEmpty(venderSale.Message)) { builder .AddField("メッセージ", venderSale.Message, false); } //if (!string.IsNullOrEmpty(vender.DeliveryMessage)) //{ // builder.WithDescription(vender.DeliveryMessage); //} //else //{ // builder.WithDescription("[配信メッセージが未設定です]"); //} string message = null; if (!string.IsNullOrEmpty(vender.DeliveryMessage)) { message = $@"販売者からのメッセージです ---------------------------- {vender.DeliveryMessage}"; } else { } var messageTargets = new[] { userContext.CurrentUser }; await CoreService.SendDirectMessage(messageTargets, message, builder.Build()); await Task.Yield(); }
public void UploadScreenshot(string name) { if (ChessService.CurrentGame == null || ChessService.CurrentGame.HasEnded) { RespondRaw("Failed", 500); return; } if (SelfPlayer == null) { RespondRaw("Failed", 400); return; } var p = ChessService.CurrentGame.GetPlayer(SelfPlayer.Id); if (p == null) { RespondRaw("Not connected to chess", 403); return; } if (!p.ExpectDemand) { RespondRaw("Unexpected image", 400); return; } var path = Path.Combine(Program.BASE_PATH, "ChessO", "Demands", DateTime.Now.DayOfYear.ToString("000")); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string fName = $"{SelfPlayer.Id.ToString("00")}_{p.DemandsSent.ToString("000")}_{name}.png"; p.DemandsSent++; path = Path.Combine(path, fName); SaveFile(Context.Request.ContentEncoding, GetBoundary(Context.Request.ContentType), new MemoryStream(Encoding.UTF8.GetBytes(Context.Body)), path); var builder = new Discord.EmbedBuilder(); builder.Title = "Desktop Uploaded"; builder.Description = $"In response to admin demand, {SelfPlayer.Name} has uploaded a screenshot of their screens.\n" + $"For privacy purposes, this screenshot will be reviewed by the Chief Justice and released to their discretion"; builder.AddField("File Name", fName); ChessS.LogAdmin(builder); RespondRaw("Saved"); }
public void UploadProcesses() { if (ChessService.CurrentGame == null || ChessService.CurrentGame.HasEnded) { RespondRaw("Failed", 500); return; } if (SelfPlayer == null) { RespondRaw("Failed", 400); return; } var p = ChessService.CurrentGame.GetPlayer(SelfPlayer.Id); if (p == null) { RespondRaw("Not connected to chess", 403); return; } if (!p.ExpectDemand) { RespondRaw("Unexpected image", 400); return; } var path = Path.Combine(Program.BASE_PATH, "ChessO", "Demands", DateTime.Now.DayOfYear.ToString("000")); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string fName = $"{SelfPlayer.Id.ToString("00")}_{p.DemandsSent.ToString("000")}_processes.txt"; p.DemandsSent++; File.WriteAllText(Path.Combine(path, fName), Context.Body); var builder = new Discord.EmbedBuilder(); builder.Title = "Processes Gathered"; builder.Description = $"In response to admin demand, {SelfPlayer.Name} has sent a list of active processes.\n" + $"For privacy purposes, this screenshot will be reviewed by the Chief Justice and released to their discretion"; builder.AddField("File Name", fName); ChessS.LogAdmin(builder); RespondRaw("Saved"); }
public Discord.Embed getHelpMessageEmbed() { var eb = new Discord.EmbedBuilder().WithAuthor("The Overbork", server.DC.CurrentUser.GetAvatarUrl()).WithCurrentTimestamp(); eb.WithTitle(name).WithDescription(helpmessage.getDescription()).AddInlineField("Format", helpmessage.getFormat()).AddInlineField("Permission Required", priv == PrivilegeLevel.Everyone ? "None" : "Bot Admin"); var args = helpmessage.getArguments().SelectMany(x => x + "\n").ToArray(); eb.AddField("Arguments", args.Length == 0 ? "None" : new String(args)); /* const int maxFieldSize = 1024; * for (int i = 0; i < ((botInfo.Length + (maxFieldSize - 1)) / maxFieldSize); i++) * { * int remLen = botInfo.Length - i * maxFieldSize; * int len = remLen < maxFieldSize ? remLen : maxFieldSize; * eb = eb.AddField("help" + i, botInfo.Substring(i * maxFieldSize, len)); * } * safeSendEmbed(e.Channel, eb.Build());*/ return(eb.Build()); }
public void UploadChromeTabs() { if (ChessService.CurrentGame == null || ChessService.CurrentGame.HasEnded) { RespondRaw("Failed", 500); return; } if (SelfPlayer == null) { RespondRaw("Failed", 400); return; } var p = ChessService.CurrentGame.GetPlayer(SelfPlayer.Id); if (p == null) { RespondRaw("Not connected to chess", 403); return; } // we dont expect anything, client pro-actively notifies var path = Path.Combine(Program.BASE_PATH, "ChessO", "Demands", DateTime.Now.DayOfYear.ToString("000")); if (!Directory.Exists(path)) { Directory.CreateDirectory(path); } string fName = $"{SelfPlayer.Id.ToString("00")}_{p.DemandsSent.ToString("000")}_chrome.txt"; p.DemandsSent++; File.WriteAllText(Path.Combine(path, fName), Context.Body); var builder = new Discord.EmbedBuilder(); builder.Title = "Chrome Processes"; builder.Description = $"Client has identified possible concern in open Chrome tabs.\n" + $"For privacy purposes, the tab names will be reviewed by the Chief Justice and released to their discretion"; builder.AddField("File Name", fName); ChessS.LogAdmin(builder); RespondRaw("Saved"); }
private async Task Notification(VetMember from, VetMember to, long amount, string message, long totalAmount) { var builder = new Discord.EmbedBuilder(); builder .WithTitle($"{from.Name} から{amount}{StaticSettings.CurrenryUnit} 送金されました") .WithAuthor( from.Name, from.GetAvaterIconUrl(), from.GetMemberPageUrl(StaticSettings.SiteBaseUrl) ) .AddField("金額", $"{amount}{StaticSettings.CurrenryUnit}", false) .AddField("残高", $"{totalAmount}{StaticSettings.CurrenryUnit}", false); if (!string.IsNullOrEmpty(message)) { builder .AddField("メッセージ", message, false); } var messageTargets = new[] { to }; await CoreService.SendDirectMessage(messageTargets, string.Empty, builder.Build()); }
public static Discord.EmbedBuilder AddInlineField(this Discord.EmbedBuilder builder, string name, object value) { return(builder.AddField(name, value, inline: true)); }