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