コード例 #1
0
        public async Task Start()
        {
            client         = new DiscordSocketClient();
            commandService = new CommandService();

            IServiceCollection services = new ServiceCollection()
                                          .AddSingleton <WoWService>()
                                          .AddSingleton <UserDataService>()
                                          .AddSingleton <GiveAwayService>()
                                          .AddSingleton(commandService)
                                          .AddSingleton(client);

            serviceProvider = services.BuildServiceProvider();

            commandHandler = new CommandHandler(client, commandService, serviceProvider);
            eventHandler   = new EventHandler(client, serviceProvider);

            string AuthToken = File.ReadAllText(AppDomain.CurrentDomain.BaseDirectory + "authkey.secret");
            await client.LoginAsync(TokenType.Bot, AuthToken, true);


            await client.StartAsync();

            await client.SetGameAsync("Aequinoctium");

            while (true)
            {
                string command = Console.ReadLine();

                switch (command.ToLower())
                {
                case "backup":
                    UserDataService.BackupUserData();
                    GiveAwayService.BackupGiveAways();
                    break;

                case "save":
                    UserDataService.SaveUserData();
                    GiveAwayService.SaveGiveAways();
                    break;

                case "load":
                    UserDataService.LoadUserData();
                    GiveAwayService.LoadGiveAways();
                    break;

                case "stop":
                    UserDataService.SaveUserData();
                    GiveAwayService.SaveGiveAways();
                    return;
                }
            }
        }
コード例 #2
0
        public static void BuyTickets(ICommandContext context, int id, int amountToBuy)
        {
            GiveAway giveAway = GiveAways[id - 1];

            switch (giveAway.state)
            {
            case GiveAwayState.Cancelled:
                context.Channel.SendMessageAsync("Sorry, That giveaway is cancelled! You cannot buy tickets.");
                return;

            case GiveAwayState.Ended:
                context.Channel.SendMessageAsync("Sorry, That giveaway has aleady ended! You cannot buy tickets.");
                return;

            case GiveAwayState.Pending:
                context.Channel.SendMessageAsync("Sorry, That giveaway has not yet started and is in pending status! You cannot buy tickets yet. Wait untill the status is `open`.");
                return;
            }

            UserDataSet userDataSet = UserDataService.UserData.FirstOrDefault(x => x.userID == context.User.Id);

            if (userDataSet.drak - (amountToBuy * giveAway.ticketEntryCost) < 0)
            {
                context.Channel.SendMessageAsync("Sorry, you don't have enough Draks to complete this purchase."); return;
            }
            if (giveAway.tickets.Exists(x => x.userDataSet.userID == userDataSet.userID))
            {
                userDataSet.drak -= giveAway.ticketEntryCost * amountToBuy;

                TicketData ticketData = giveAway.tickets.FirstOrDefault(x => x.userDataSet.userID == userDataSet.userID);
                ticketData.userDataSet   = userDataSet;
                ticketData.ticketAmount += amountToBuy;
                context.Channel.SendMessageAsync("Tickets have been successfully bought!");
            }
            else
            {
                userDataSet.drak -= giveAway.ticketEntryCost * amountToBuy;

                TicketData ticketData = new TicketData();
                ticketData.userDataSet   = userDataSet;
                ticketData.ticketAmount += amountToBuy;

                giveAway.tickets.Add(ticketData);
                context.Channel.SendMessageAsync("Tickets have been successfully bought!");
            }
            UserDataService.SaveUserData();
            SaveGiveAways();
            UpdateGiveAwayMessage(giveAway);
        }