internal string MarkPlayer(SocketMessage message, string status) { try { var sheetService = AuthorizeGoogleSheets(); var sheet = GetHomeSheet(message.Channel.Name); // Define request parameters. var userName = message.Author.Username; var range = $"{sheet.SheetName}!A:E"; // strip off any <>s if people included them //userValue = userValue.TrimStart('<').TrimEnd('>'); // first check to see if this person already has a submission var checkExistingRequest = sheetService.Spreadsheets.Values.Get(sheet.SheetId, range); var existingRecords = checkExistingRequest.Execute(); ColumnInput columnInput = null; foreach (var record in existingRecords.Values) { foreach (var cell in record) { if (cell.ToString().ToLower().Trim().Equals(userName.ToLower().Trim())) { var index = existingRecords.Values.IndexOf(record); range = $"{sheet.SheetName}!A{index + 1}"; columnInput = new ColumnInput(); columnInput.Column1Value = status; columnInput.Column2Value = (record.Count >= 2 && record[1] != null) ? record[1].ToString() : string.Empty;; columnInput.Column3Value = (record.Count >= 3 && record[2] != null) ? record[2].ToString() : string.Empty;; columnInput.Column4Value = (record.Count >= 4 && record[3] != null) ? record[3].ToString() : string.Empty;; var oblist = new List <object>() { columnInput.Column1Value, columnInput.Column2Value, columnInput.Column3Value, columnInput.Column4Value }; var valueRange = new ValueRange(); valueRange.Values = new List <IList <object> > { oblist }; // Performing Update Operation... var updateRequest = sheetService.Spreadsheets.Values.Update(valueRange, sheet.SheetId, range); updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED; var appendReponse = updateRequest.Execute(); return($"Player {message.Author.Username} marked as {status} in the spreadsheet"); } } } return($"Sorry, could not mark {message.Author.Username} as {status} as they were not found in the spreadsheet for this event."); } catch (Exception exc) { Console.WriteLine(exc.Message); return("There was an error trying to add your info"); } }
public async Task <ApiResult> AddToUpdateAsync(ColumnInput columnInput) { var columnModel = await GetModelAsync(d => d.Title.Equals(columnInput.Title)); if (columnModel?.Id > 0) { throw new FriendlyException("已经存在类目名称了"); } var column = _mapper.Map <Column>(columnInput); var columnId = await AddAsync(column); var result = await DealColumn(columnInput.ParentId, columnId); var i = await UpdateAsync(d => new Column() { ParentList = result.Item2, Layer = result.Item1 }, d => d.Id == columnId); return(new ApiResult(i)); }
public string SendLinkToGoogle(SheetsService sheetsService, SocketMessage message, string SpreadsheetId, string sheet, ColumnInput columnInput) { try { // Define request parameters. var userName = message.Author.Username; var range = $"{sheet}!{Refs.COL_SPAN}"; // strip off any <>s if people included them //userValue = userValue.TrimStart('<').TrimEnd('>'); // first check to see if this person already has a submission var checkExistingRequest = sheetsService.Spreadsheets.Values.Get(SpreadsheetId, range); var existingRecords = checkExistingRequest.Execute(); bool existingEntryFound = false; foreach (var record in existingRecords.Values) { if (record.Contains(userName)) { var index = existingRecords.Values.IndexOf(record); range = $"{sheet}!A{index + 1}"; existingEntryFound = true; break; } } var oblist = new List <object>() { columnInput.Column1Value, columnInput.Column2Value, columnInput.Column3Value, columnInput.Column4Value }; var valueRange = new ValueRange(); valueRange.Values = new List <IList <object> > { oblist }; if (existingEntryFound) { // Performing Update Operation... var updateRequest = sheetsService.Spreadsheets.Values.Update(valueRange, SpreadsheetId, range); updateRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.UpdateRequest.ValueInputOptionEnum.USERENTERED; var appendReponse = updateRequest.Execute(); return($"Thanks {userName}, your info was updated!"); } else { // Append the above record... var appendRequest = sheetsService.Spreadsheets.Values.Append(valueRange, SpreadsheetId, range); appendRequest.ValueInputOption = SpreadsheetsResource.ValuesResource.AppendRequest.ValueInputOptionEnum.USERENTERED; var appendReponse = appendRequest.Execute(); return($"Thanks {userName}, your info was added!"); } } catch (Exception exc) { Console.WriteLine(exc.Message); return("There was an error trying to add your info"); } }
private async Task DiscordMessageReceived(SocketMessage message) { if (message.Author.IsBot) { return; } var dmchannelID = await message.Author.GetOrCreateDMChannelAsync(); if (message.Channel.Id == dmchannelID.Id) { if (message.Content.ToLower().StartsWith("submit") || message.Content.ToLower().StartsWith("!submit") || message.Content.ToLower().StartsWith(".submit")) { try { var eventName = "undetermined"; var args = message.Content.Split(' '); switch (args[1].ToUpper()) { case "WDA": case "WEEKLY-DICE-ARENA": eventName = Refs.EVENT_WDA; break; case "DF": case "DICE-FIGHT": eventName = Refs.EVENT_DICE_FIGHT; break; case "TOTM": case "TEAM-OF-THE-MONTH": eventName = Refs.EVENT_TOTM; break; case "RFTN": case "ROLL-FOR-THE-NORTH": case "CANNATS": eventName = Refs.EVENT_ONEOFF; break; default: break; } await message.Channel.SendMessageAsync(SubmitTeamLink(eventName, args[2], message)); } catch (Exception exc) { Console.WriteLine($"Exception submitting team via DM: {exc.Message}"); await message.Channel.SendMessageAsync("Sorry, I was unable to determine which event you wanted to submit to."); await message.Channel.SendMessageAsync(Refs.DMBotSubmitTeamHint); await message.Channel.SendMessageAsync("If you think you're doing it right and it still doesn't work, message Yort or post in #bot-uprising"); } } else if (message.Content.ToLower().StartsWith("!win") || message.Content.ToLower().StartsWith(".win")) { try { var sheetsService = _sheetService.AuthorizeGoogleSheets(); string[] args = message.Content.Split(" "); ColumnInput ci = new ColumnInput { Column1Value = message.Author.Username, Column2Value = args[1] }; // record it in the spreadsheet await message.Channel.SendMessageAsync( _sheetService.SendLinkToGoogle(sheetsService, message, _sheetService.DiceFightSheetId, "WINSheet", ci)); await message.Channel.SendMessageAsync("Also, I hope to do this automatically soon, but I am already up to late, so would you mind terribly re-submitting your team so your WIN name gets recorded properly? Thanks, I reaZZZZZZZZZ"); // update current DiceFight sheet? } catch (Exception exc) { Console.WriteLine($"Exception in UpdateWinName: {exc.Message}"); await message.Channel.SendMessageAsync("Sorry, I was unable to record your WIN Name. Please contact Yort and tell him what went wrong"); } } else { await message.Channel.SendMessageAsync("Sorry, I don't understand that command. I'm not actually that smart, you know."); } return; } if (message.Content == "!ping") { await message.Channel.SendMessageAsync("Pong!"); } else if (message.Content.ToLower().StartsWith(SUBMIT_STRING) || message.Content.ToLower().StartsWith(".submit")) { // first delete the original message await message.Channel.DeleteMessageAsync(message); var teamlink = message.Content.TrimStart(SUBMIT_STRING.ToCharArray()).TrimStart(".submit".ToCharArray()).Trim(); await message.Channel.SendMessageAsync(SubmitTeamLink(message.Channel.Name, teamlink, message)); } else if (message.Content.ToLower().StartsWith(".format") || message.Content.ToLower().StartsWith("!format")) { await message.Channel.SendMessageAsync(GetCurrentFormat(message)); } else if (message.Content.ToLower().StartsWith(".count") || message.Content.ToLower().StartsWith("!count")) { await message.Channel.SendMessageAsync(_sheetService.GetCurrentPlayerCount(message)); } else if (message.Content.ToLower().StartsWith(".list") || message.Content.ToLower().StartsWith("!list")) { await message.Channel.SendMessageAsync(_sheetService.GetCurrentPlayerList(message)); } else if (message.Content.ToLower().StartsWith(".here") || message.Content.ToLower().StartsWith("!here")) { await message.Channel.SendMessageAsync(_sheetService.MarkPlayerHere(message)); } else if (message.Content.ToLower().StartsWith(".drop") || message.Content.ToLower().StartsWith("!drop")) { await message.Channel.SendMessageAsync(_sheetService.MarkPlayerDropped(message)); } else if (message.Content.ToLower().StartsWith(".teams")) { await message.Channel.SendMessageAsync(_sheetService.ListTeams(message)); } else if (message.Content.ToLower().StartsWith(".help") || message.Content.ToLower().StartsWith("!help")) { await message.Channel.SendMessageAsync(Refs.DMBotCommandHelpString); } else if (message.Content.StartsWith("!test")) { var participants = await _challonge.GetAllParticipantsAsync("3a5g0n90"); Logger.LogDebug($"{participants.Count}"); } }
private string SubmitTeamLink(string eventName, string teamlink, SocketMessage message) { var sheetsService = _sheetService.AuthorizeGoogleSheets(); ColumnInput input; string response = Refs.DMBotSubmitTeamHint; HomeSheet homeSheet = _sheetService.GetHomeSheet(eventName); if (homeSheet == null) { return(response); } if (eventName == "weekly-dice-arena") { input = new ColumnInput() { Column1Value = DateTime.Now.ToString(), Column2Value = message.Author.Username, Column3Value = teamlink }; response = _sheetService.SendLinkToGoogle(sheetsService, message, _sheetService.WDASheetId, homeSheet.SheetName, input); } else if (eventName == "dice-fight") { string winName = _sheetService.GetWINName(sheetsService, _sheetService.DiceFightSheetId, message.Author.Username); input = new ColumnInput() { Column1Value = DateTime.Now.ToString(), Column2Value = message.Author.Username, Column3Value = teamlink, Column4Value = winName }; response = _sheetService.SendLinkToGoogle(sheetsService, message, _sheetService.DiceFightSheetId, homeSheet.SheetName, input); if (string.IsNullOrWhiteSpace(winName)) { message.Author.SendMessageAsync(Refs.DiceFightAskForWin); } } else if (eventName == Refs.EVENT_ONEOFF) { //string winName = _sheetService.GetWINName(sheetsService, _sheetService.OneOffSheetId, message.Author.Username); input = new ColumnInput() { Column1Value = DateTime.Now.ToString(), Column2Value = message.Author.Username, Column3Value = teamlink }; response = _sheetService.SendLinkToGoogle(sheetsService, message, _sheetService.OneOffSheetId, homeSheet.SheetName, input); //if (string.IsNullOrWhiteSpace(winName)) //{ // message.Author.SendMessageAsync(Refs.DiceFightAskForWin); //} } else if (eventName == "team-of-the-month") { input = new ColumnInput() { Column1Value = DateTime.Now.ToString(), Column2Value = message.Author.Username, Column3Value = teamlink }; response = _sheetService.SendLinkToGoogle(sheetsService, message, _sheetService.TotMSheetId, homeSheet.SheetName, input); } else if (eventName == "monthly-one-shot") { input = new ColumnInput() { Column1Value = message.Author.Username, Column2Value = teamlink }; response = _sheetService.SendLinkToGoogle(sheetsService, message, _sheetService.CRGRM1SSheetId, Refs.CRGRM1SSheetName, input); } else if (eventName == "TTTD") { input = new ColumnInput() { Column1Value = message.Author.Username, Column2Value = teamlink }; response = _sheetService.SendLinkToGoogle(sheetsService, message, _sheetService.CRGRTTTDSheetId, Refs.CRGRTTTDSheetName, input); } if (!response.Equals(Refs.DMBotSubmitTeamHint)) { message.Author.SendMessageAsync($"The following team was successfully submitted for {eventName}"); message.Author.SendMessageAsync(teamlink); } return(response); }