コード例 #1
0
        /// <summary>
        /// 凸宣言削除
        /// </summary>
        /// <returns></returns>
        private bool DeleteAllBattleData()
        {
            var userClanData = m_userClanData;

            var mySQLDeclaration = new MySQLDeclarationController();
            var declarationData  = mySQLDeclaration.LoadDeclarationData(userClanData);

            var result = mySQLDeclaration.DeleteDeclarationData(declarationData);

            return(result);
        }
コード例 #2
0
        private IEnumerable <DeclarationData> DeclareDataOnSQL(ulong userID)
        {
            var userRole = m_userRole;

            var playerData = new MySQLPlayerDataController().LoadPlayerData(
                userRole.Guild.Id, userID);

            var declarationData = new MySQLDeclarationController()
                                  .LoadDeclarationData(playerData);

            return(declarationData);
        }
コード例 #3
0
        /// <summary>
        /// 凸宣言した時のコード
        /// </summary>
        /// <returns></returns>
        private bool UserRegistorDeclareCommand()
        {
            var userReaction = m_userReaction;
            var userId       = userReaction.UserId;

            var isExistSqlData = DeclareDataOnSQL(userId).Any(d => d.FinishFlag == false);

            if (isExistSqlData)
            {
                return(false);
            }

            var declarationData = UserToDeclareData(userId);
            var result          = new MySQLDeclarationController()
                                  .CreateDeclarationData(declarationData);

            return(result);
        }
コード例 #4
0
        /// <summary>
        /// 本戦が終了した際のコード
        /// </summary>
        /// <returns></returns>
        private bool UserFinishBattleCommand()
        {
            var userRole     = m_userRole;
            var userClanData = m_userClanData;
            var userReaction = m_userReaction;

            // すでに宣言しているか判定
            var sqlData = DeclareDataOnSQL(userReaction.UserId)
                          .Count(d => d.FinishFlag == false);

            if (sqlData != 1)
            {
                return(false);
            }

            // 宣言終了
            var declarationData = UserToDeclareData(userReaction.UserId);

            declarationData.FinishFlag = true;
            var result = new MySQLDeclarationController()
                         .UpdateDeclarationData(declarationData);

            // 予約の削除
            var playerData = new MySQLPlayerDataController().LoadPlayerData(
                userRole.Guild.Id, userReaction.UserId);

            var mySQLReservationController = new MySQLReservationController();
            var reservationData            = mySQLReservationController.LoadReservationData(playerData);
            var finishReservationData      = reservationData
                                             .FirstOrDefault(d => d.BattleLap == userClanData.BattleLap && d.BossNumber == userClanData.BossNumber);

            if (finishReservationData != null)
            {
                mySQLReservationController.DeleteReservationData(finishReservationData);
            }

            return(result);
        }
コード例 #5
0
        /// <summary>
        /// 宣言データを送信するためのコード
        /// </summary>
        /// <returns></returns>
        private async Task <bool> SendDeclarationBotMessage()
        {
            var embed              = CreateDeclarationDataEmbed(m_userClanData);
            var content            = CreateDeclarationDataMessage(m_userClanData);
            var declarationChannel = m_userRole.Guild.GetTextChannel(m_userClanData.ChannelIDs.DeclarationChannelID);
            var sentMessage        = await declarationChannel.SendMessageAsync(text : content, embed : embed);

            if (sentMessage == null)
            {
                return(false);
            }

            var sentMessageId = sentMessage.Id;

            var result = new MySQLDeclarationController()
                         .UpdateDeclarationMessageID(m_userClanData, sentMessageId);

            await AttacheDefaultReaction(sentMessage);

            m_userClanData.MessageIDs.DeclarationMessageID = sentMessageId;

            return(result);
        }
コード例 #6
0
        private Embed CreateDeclarationDataEmbed(ClanData clanData)
        {
            var reservationDataList =
                new MySQLReservationController().LoadBossLapReservationData(clanData);
            var declarationDataList =
                new MySQLDeclarationController().LoadDeclarationData(clanData);

            var bossNumber = clanData.BossNumber;
            var battleLap  = clanData.BattleLap;

            var updateTime       = DateTime.Now;
            var updateTimeString = updateTime.ToString("T");

            var reservationNameList = reservationDataList
                                      .OrderBy(d => d.CreateDateTime)
                                      .Select(d => d.PlayerData.GuildUserName)
                                      .ToList();

            var reservationListMessage = NameListToMessageData(reservationNameList);
            var reservationPlayerCount = reservationNameList.Count();

            if (reservationPlayerCount == 0)
            {
                reservationListMessage = "予約なし";
            }

            var finishNameList = declarationDataList
                                 .Where(d => d.FinishFlag)
                                 .OrderBy(d => d.DateTime)
                                 .Select(d => d.PlayerData.GuildUserName)
                                 .ToList();

            var finishListMessage = NameListToMessageData(finishNameList);
            var finishPlayerCount = finishNameList.Count();

            if (finishPlayerCount == 0)
            {
                finishListMessage = "完了者なし";
            }

            var nowBattleNameList = declarationDataList
                                    .Where(d => !d.FinishFlag)
                                    .OrderBy(d => d.DateTime)
                                    .Select(d => d.PlayerData.GuildUserName)
                                    .ToList();

            var nowBattleListMessage = NameListToMessageData(nowBattleNameList);
            var nowBattlePlayerCount = nowBattleNameList.Count();

            if (nowBattlePlayerCount == 0)
            {
                nowBattleListMessage = "宣言なし";
            }

            var embedBuild = new EmbedBuilder
            {
                Title = $"凸宣言({battleLap, 2}周目{bossNumber,1}ボス)"
            };

            var explainMessage = "```python\n" +
                                 "1. ⚔️で本戦開始の宣言をします。\n" +
                                 "2. (ボスを倒さず)本戦が終わったら✅で完了します。\n" +
                                 "3. ボスを倒したら🏁を押してください。\n" +
                                 "4. 凸宣言をキャンセルするときは❌\n" +
                                 "```\n";

            embedBuild.AddField(new EmbedFieldBuilder()
            {
                IsInline = true,
                Name     = $"本戦宣言中({nowBattlePlayerCount}人)",
                Value    = nowBattleListMessage
            });

            embedBuild.AddField(new EmbedFieldBuilder()
            {
                IsInline = true,
                Name     = $"予約中({reservationPlayerCount}人)",
                Value    = reservationListMessage
            });

            embedBuild.AddField(new EmbedFieldBuilder()
            {
                IsInline = false,
                Name     = $"本戦完了({finishPlayerCount}人)",
                Value    = finishListMessage
            });

            embedBuild.AddField(new EmbedFieldBuilder()
            {
                IsInline = false,
                Name     = $"説明",
                Value    = explainMessage
            });

            embedBuild.Color  = Color.Red;
            embedBuild.Footer = new EmbedFooterBuilder()
            {
                Text = $"最終更新時刻:{updateTimeString}"
            };

            var embed = embedBuild.Build();

            return(embed);
        }