/// <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); }
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); }
/// <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); }
/// <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); }
/// <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); }
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); }