示例#1
0
        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);
        }
示例#2
0
        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());
        }
示例#3
0
 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());
 }
示例#4
0
        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());
 }
示例#6
0
        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);
        }
示例#7
0
        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());
        }
示例#8
0
        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();
                    });
                }
            }
示例#9
0
        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();
        }
示例#10
0
        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");
        }
示例#11
0
        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");
        }
示例#12
0
        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());
        }
示例#13
0
        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");
        }
示例#14
0
        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());
        }
示例#15
0
 public static Discord.EmbedBuilder AddInlineField(this Discord.EmbedBuilder builder, string name, object value)
 {
     return(builder.AddField(name, value, inline: true));
 }