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");
            }
        }
Exemplo n.º 2
0
        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");
            }
        }
Exemplo n.º 4
0
        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}");
            }
        }
Exemplo n.º 5
0
        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);
        }