示例#1
0
 public UserCommands(TimerService timer,
                     Logger.Logger logger,
                     IPrefixService prefixService,
                     GuildService guildService,
                     LastFMService lastFmService,
                     IIndexService indexService,
                     UserService userService,
                     FriendsService friendsService)
 {
     this._timer          = timer;
     this._logger         = logger;
     this._prefixService  = prefixService;
     this._guildService   = guildService;
     this._friendsService = friendsService;
     this._userService    = userService;
     this._lastFmService  = lastFmService;
     this._indexService   = indexService;
     this._embed          = new EmbedBuilder()
                            .WithColor(Constants.LastFMColorRed);
     this._embedAuthor = new EmbedAuthorBuilder();
     this._embedFooter = new EmbedFooterBuilder();
 }
示例#2
0
        private static void HandleServices(GameSession session, PacketReader packet)
        {
            int serviceId = packet.ReadInt();

            Guild guild = GameServer.GuildManager.GetGuildById(session.Player.Guild.Id);

            if (guild == null)
            {
                return;
            }

            int          currentLevel = 0;
            GuildService service      = guild.Services.FirstOrDefault(x => x.Id == serviceId);

            if (service != null)
            {
                service.Level = currentLevel;
            }

            GuildServiceMetadata serviceMetadata = GuildServiceMetadataStorage.GetMetadata(serviceId, currentLevel);

            if (serviceMetadata == null)
            {
                return;
            }

            GuildPropertyMetadata propertyMetadata = GuildPropertyMetadataStorage.GetMetadata(guild.Exp);

            if (guild.HouseRank < serviceMetadata.HouseLevelRequirement ||
                propertyMetadata.Level < serviceMetadata.LevelRequirement ||
                guild.Funds < serviceMetadata.UpgradeCost)
            {
                return;
            }

            guild.ModifyFunds(session, propertyMetadata, -serviceMetadata.UpgradeCost);
            guild.BroadcastPacketGuild(GuildPacket.UpgradeService(session.Player, serviceId, serviceMetadata.Level));
        }
示例#3
0
        private async Task Startup()
        {
            DBHelper db = new DBHelper();
            var      PM = new PlayerModule();
            var      RS = new RaidService();

            PM.UpdateAll();
            var list = db.GetAllSubscribedChannels();
            var ss   = new SubscribedChannelService();

            if (list.Count != 0)
            {
                list = list.Where(x => x.Type == SubscribeType.Raid).ToList();
                list.ForEach(async o => await ss.Attach(o));
            }
            ss.ObserveRaids();
            RS.ObserveThread();
            var player     = db.GetAll <Player>().Where(o => o.DiscordName == "Nillertron#5220").FirstOrDefault();
            var msgService = new LogMessageService();
            await msgService.Attach(player);

            var guildService = new GuildService();
        }
示例#4
0
        public void CanUpdateGuildAndSaveToDatabase()
        {
            DbContextOptions <GuildAPIDbContext> options = new DbContextOptionsBuilder <GuildAPIDbContext>()
                                                           .UseInMemoryDatabase("CanUpdateGuildAndSaveToDatabase")
                                                           .Options;

            using GuildAPIDbContext context = new GuildAPIDbContext(options);
            GamesService gameService = new GamesService(context);
            GamesDTO     gamesDTO    = new GamesDTO()
            {
                Name = "Odins Game"
            };
            var          createdGame  = gameService.Create(gamesDTO);
            GuildService guildService = new GuildService(context, gameService);

            Assert.Equal(1, context.Games.CountAsync().Result);
            GuildsDTO guild = new GuildsDTO()
            {
                Name = "Odin Slayers"
            };
            var creation    = guildService.Create(guild);
            var association = gameService.AddGameGuild(createdGame.Result.Id, creation.Result.Id);

            GuildsDTO guildsDTO = new GuildsDTO()
            {
                Id   = 1,
                Name = "I am updated"
            };

            var update = guildService.Update(guildsDTO).Result;
            var actual = context.Guilds.FindAsync(update.Id).Result;

            Assert.Equal(1, context.Guilds.CountAsync().Result);
            Assert.IsType <Guilds>(actual);
            Assert.Equal(1, actual.Id);
            Assert.Equal("I am updated", actual.Name);
        }
示例#5
0
    public void GetConfigAsync()
    {
        var mock = new Mock <IGuildData>(MockBehavior.Strict);

        mock.Setup(x => x.GetGuildConfigAsync(0)).Returns(
            Task.FromResult(new Sharp.Data.Config()
        {
            mod_Channel_Id = "123456789123456789",
            prefix         = '-',
            message_log    = false
        }));

        var guildService = new GuildService(mock.Object);

        var actual   = guildService.GetConfigAsync(0);
        var expected = Task.FromResult(new Sharp.Service.Config
        {
            ModChannelId = 123456789123456789,
            Prefix       = '-',
            MessageLog   = false
        });

        Assert.Equal(expected.Result, actual.Result);
    }
        public bool SetDailyGPLimit()
        {
            string argString = base.Operation.GetArgString(0, "");
            Dictionary <string, string> dictionary = new Dictionary <string, string>();

            dictionary.Add("GuildLevel_DailyGPLimit", argString);
            FeatureMatrix.OverrideFeature(dictionary);
            GuildContents.LoadGuildDailyGPLimit();
            GuildService guildService = base.Entity.Service;

            if (guildService != null)
            {
                UpdateFeatureMatrix op = new UpdateFeatureMatrix(dictionary);
                foreach (IEntity entity in guildService.Entities)
                {
                    GuildEntity guildEntity = entity.Tag as GuildEntity;
                    foreach (OnlineGuildMember onlineGuildMember in guildEntity.OnlineMembers.Values)
                    {
                        onlineGuildMember.FrontendConn.RequestOperation(op);
                    }
                }
            }
            return(true);
        }
示例#7
0
        private void LoadTaskDetailsPage()
        {
            var  player          = GetPC();
            var  model           = GetDialogCustomData <Model>();
            var  task            = DataService.GuildTask.GetByID(model.TaskID);
            var  quest           = QuestService.GetQuestByID(task.QuestID);
            var  status          = DataService.PCQuestStatus.GetByPlayerAndQuestIDOrDefault(player.GlobalID, task.QuestID);
            bool showQuestAccept = status == null || status.CompletionDate != null; // Never accepted, or has already been completed once.
            bool showGiveReport  = status != null && status.CompletionDate == null; // Accepted, but not completed.
            var  gpRewards       = quest.GetRewards().Where(x => x.GetType() == typeof(QuestGPReward)).Cast <QuestGPReward>();
            var  goldRewards     = quest.GetRewards().Where(x => x.GetType() == typeof(QuestGoldReward)).Cast <QuestGoldReward>();

            int gpAmount   = 0;
            int goldAmount = 0;

            foreach (var gpReward in gpRewards)
            {
                gpAmount += GuildService.CalculateGPReward(player, gpReward.Guild, gpReward.Amount);
            }

            foreach (var goldReward in goldRewards)
            {
                goldAmount += goldReward.Amount;
            }

            string header = ColorTokenService.Green("Task: ") + quest.Name + "\n\n";

            header += "Rewards:\n\n";
            header += ColorTokenService.Green("Credits: ") + goldAmount + "\n";
            header += ColorTokenService.Green("Guild Points: ") + gpAmount;

            SetPageHeader("TaskDetailsPage", header);

            SetResponseVisible("TaskDetailsPage", 1, showQuestAccept);
            SetResponseVisible("TaskDetailsPage", 2, showGiveReport);
        }
示例#8
0
        private static void RunServer()
        {
            Data.Data.DataPath = "data/";

            Stopwatch sw = Stopwatch.StartNew();

            AppDomain.CurrentDomain.UnhandledException += UnhandledException;

            Console.WriteLine("----===== Tera-Project C# GameServer Emulator =====----\n\n");
            Console.WriteLine("Starting Game Server!\n"
                              + "-------------------------------------------");

            TcpServer = new TcpServer("*", Config.GetServerPort(), Config.GetServerMaxCon());
            Connection.SendAllThread.Start();

            OpCodes.Init();
            Console.WriteLine("OpCodes - Revision 1725 initialized!\n"
                              + "-------------------------------------------\n");

            #region global_components

            //services
            FeedbackService    = new FeedbackService();
            AccountService     = new AccountService();
            PlayerService      = new PlayerService();
            MapService         = new MapService();
            ChatService        = new ChatService();
            VisibleService     = new VisibleService();
            ControllerService  = new ControllerService();
            CraftService       = new CraftService();
            ItemService        = new ItemService();
            AiService          = new AiService();
            GeoService         = new GeoService();
            StatsService       = new StatsService();
            ObserverService    = new ObserverService();
            AreaService        = new AreaService();
            InformerService    = new InformerService();
            TeleportService    = new TeleportService();
            PartyService       = new PartyService();
            SkillsLearnService = new SkillsLearnService();
            CraftLearnService  = new CraftLearnService();
            GuildService       = new GuildService();
            EmotionService     = new EmotionService();
            RelationService    = new RelationService();
            DuelService        = new DuelService();
            StorageService     = new StorageService();
            TradeService       = new TradeService();
            MountService       = new MountService();

            //engines
            ActionEngine = new ActionEngine.ActionEngine();
            AdminEngine  = new AdminEngine.AdminEngine();
            SkillEngine  = new SkillEngine.SkillEngine();
            QuestEngine  = new QuestEngine.QuestEngine();

            #endregion

            GlobalLogic.ServerStart("SERVER=" + Config.GetDatabaseHost() + ";DATABASE=" + Config.GetDatabaseName() + ";UID=" + Config.GetDatabaseUser() + ";PASSWORD="******";PORT=" + Config.GetDatabasePort() + ";charset=utf8");

            Console.WriteLine("-------------------------------------------\n"
                              + "Loading Tcp Service.\n"
                              + "-------------------------------------------");
            TcpServer.BeginListening();

            try
            {
                ServiceApplication = ScsServiceBuilder.CreateService(new ScsTcpEndPoint(23232));
                ServiceApplication.AddService <IInformerService, InformerService>((InformerService)InformerService);
                ServiceApplication.Start();
                Log.Info("InformerService started at *:23232.");

                var webservices = new ServiceManager();
                webservices.Run();
            }
            catch (Exception ex)
            {
                Log.ErrorException("InformerService can not be started.", ex);
            }

            sw.Stop();
            Console.WriteLine("-------------------------------------------");
            Console.WriteLine("           Server start in {0}", (sw.ElapsedMilliseconds / 1000.0).ToString("0.00s"));
            Console.WriteLine("-------------------------------------------");
        }
示例#9
0
 public UpdateGuildInventoryProcessor(GuildService service, UpdateGuildInventory op) : base(op)
 {
     this.service = service;
 }
示例#10
0
 public DoGuildOperationProcessor(GuildService service, DoGuildOperation op) : base(op)
 {
     this.service = service;
 }
示例#11
0
 public GuildModule(GuildService guildService)
 {
     _guildService = guildService;
 }
示例#12
0
 public QueryGuildIDProcessor(GuildService service, QueryGuildID op) : base(op)
 {
     this.service = service;
 }
示例#13
0
 public ReportGuildMemberChangedProcessor(GuildService service, ReportGuildMemberChanged op) : base(op)
 {
     this.service = service;
 }
示例#14
0
 public StrikeModule(StrikeService strikesHandler, GuildService guildService, CommandExtentions commandExtentions)
 {
     _strikesHandler    = strikesHandler;
     _guildHandler      = guildService;
     _commandExtentions = commandExtentions;
 }
示例#15
0
 public InviteGuildProcessor(GuildService service, InviteGuild op) : base(op)
 {
     this.service = service;
 }
 public UpdateGuildStorageSettingsProcessor(GuildService service, UpdateGuildStorageSettings op) : base(op)
 {
     this.service = service;
 }
示例#17
0
 public GuildChatProcessor(GuildService service, GuildChat op) : base(op)
 {
     this.service = service;
 }
 public ChangeGuildMasterProcessor(GuildService service, ChangeGuildMaster op) : base(op)
 {
     this.service = service;
 }
        protected override void Setup()
        {
            try {
                Instance = this;
                this.InitLogging();
                log.InfoFormat("Setup: serverId={0}", ServerId);

                Clients       = new ClientCollection();
                Notifications = new NotificationService(this);

#if LOCAL
                string databaseConnectionFile = System.IO.Path.Combine(BinaryPath, "assets/database_connection_local.txt");
#else
                string databaseConnectionFile = System.IO.Path.Combine(BinaryPath, "assets/database_connection.txt");
#endif

                string databaseConnectionString = File.ReadAllText(databaseConnectionFile).Trim();
                this.DB = new DbReader();
                this.DB.Setup(databaseConnectionString, SelectCharacterSettings.Default.DatabaseName, SelectCharacterSettings.Default.DatabaseCollectionName);

                Mail         = new MailManager(this);
                Guilds       = new GuildService(this);
                Chat         = new ChatService(this);
                Groups       = new GroupService(this);
                Stores       = new PlayerStoreService(this);
                Auction      = new AuctionService(this);
                RaceCommands = new RaceCommandService(this);

                this.Players = new PlayerService(this);

                this.StartModules = new StartPlayerModuleRes();
                this.StartModules.LoadFromFile(Path.Combine(this.BinaryPath, "assets/start_player_modules.xml"));

                bankSlotPrices = new BankSlotPriceCollection();
                bankSlotPrices.LoadFromFile(Path.Combine(this.BinaryPath, "assets/bank_slot_price.xml"));

                leveling = new Leveling();
                leveling.Load(Path.Combine(BinaryPath, "assets"));

                itemPriceCollection = new ItemPriceCollection();
                itemPriceCollection.Load(BinaryPath);

                consumableItems = new ConsumableItemCollection();
                consumableItems.Load(BinaryPath);

                StartLocations = new StartLocationCollection();
                StartLocations.LoadFromFile(Path.Combine(BinaryPath, "assets/start_locations.xml"));
                log.Info(StartLocations.GetWorld(Race.Humans, Workshop.DarthTribe));

                pvpStoreItems = new PvpStoreItemCollection();
                pvpStoreItems.Load(Path.Combine(BinaryPath, "assets/pvp_store.xml"));
                log.InfoFormat("store items loaded = {0} [red]", pvpStoreItems.count);

                serverSettings = new ServerInputsRes();
                serverSettings.Load(BinaryPath, "Data/server_inputs.xml");

                resource = new Res(BinaryPath);
                resource.Load();

                Election  = new CommanderElection(this);
                raceStats = new RaceStatsService(this);

                friends = new FriendService(this);

                pvpStore = new PvpStoreManager(this);

                achievmentCache = new Achievments.AchievmentCache(this);

                Protocol.AllowRawCustomValues = true;
                this.PublicIpAddress          = PublicIPAddressReader.ParsePublicIpAddress(SelectCharacterSettings.Default.PublicIPAddress);
                this.ConnectToMaster();

                this.executionFiber = new PoolFiber();
                this.executionFiber.Start();
                this.executionFiber.ScheduleOnInterval(this.Update,
                                                       SelectCharacterSettings.Default.DatabaseSaveInterval * 1000,
                                                       SelectCharacterSettings.Default.DatabaseSaveInterval * 1000);
            }catch (Exception ex) {
                log.Error(ex);
                log.Error(ex.StackTrace);
            }
        }
示例#20
0
        private static void RunServer()
        {
            //Start ServerStartTime
            Stopwatch serverStartStopwatch = Stopwatch.StartNew();

            AppDomain.CurrentDomain.UnhandledException += UnhandledException;

            //CheckServerMode
            CheckServerMode();

            //ConsoleOutput-Infos
            PrintServerLicence();
            PrintServerInfo();

            //Initialize TcpServer
            TcpServer = new TcpServer("*", Configuration.Network.GetServerPort(), Configuration.Network.GetServerMaxCon());
            Connection.SendAllThread.Start();

            //Initialize Server OpCodes
            OpCodes.Init();
            Console.WriteLine("----------------------------------------------------------------------------\n"
                              + "---===== OpCodes - Revision: " + OpCodes.Version + " EU initialized!");

            //Global Services
            #region global_components
            //Services
            FeedbackService    = new FeedbackService();
            AccountService     = new AccountService();
            PlayerService      = new PlayerService();
            MapService         = new MapService();
            ChatService        = new ChatService();
            VisibleService     = new VisibleService();
            ControllerService  = new ControllerService();
            CraftService       = new CraftService();
            ItemService        = new ItemService();
            AiService          = new AiService();
            GeoService         = new GeoService();
            StatsService       = new StatsService();
            ObserverService    = new ObserverService();
            AreaService        = new AreaService();
            TeleportService    = new TeleportService();
            PartyService       = new PartyService();
            SkillsLearnService = new SkillsLearnService();
            CraftLearnService  = new CraftLearnService();
            GuildService       = new GuildService();
            EmotionService     = new EmotionService();
            RelationService    = new RelationService();
            DuelService        = new DuelService();
            StorageService     = new StorageService();
            TradeService       = new TradeService();
            MountService       = new MountService();

            //Engines
            ActionEngine = new ActionEngine.ActionEngine();
            AdminEngine  = new AdminEngine.AdminEngine();
            SkillEngine  = new SkillEngine.SkillEngine();
            QuestEngine  = new QuestEngine.QuestEngine();
            #endregion

            //Set SqlDatabase Connection
            GlobalLogic.ServerStart("SERVER=" + DAOManager.MySql_Host + ";DATABASE=" + DAOManager.MySql_Database + ";UID=" + DAOManager.MySql_User + ";PASSWORD="******";PORT=" + DAOManager.MySql_Port + ";charset=utf8");
            Console.ForegroundColor = ConsoleColor.Gray;

            //Start Tcp-Server Listening
            Console.WriteLine("----------------------------------------------------------------------------\n"
                              + "---===== Loading GameServer Service.\n"
                              + "----------------------------------------------------------------------------");
            TcpServer.BeginListening();

            //Stop ServerStartTime
            serverStartStopwatch.Stop();
            Console.WriteLine("----------------------------------------------------------------------------");
            Console.WriteLine("---===== GameServer start in {0}", (serverStartStopwatch.ElapsedMilliseconds / 1000.0).ToString("0.00s"));
            Console.WriteLine("----------------------------------------------------------------------------");
        }
示例#21
0
 public ConnectGuildProcessor(GuildService service, ConnectGuild op) : base(op)
 {
     this.service = service;
 }
        public async Task HandleReaction(DiscordSocketClient discordSocketClient, SocketReaction reaction, ISocketMessageChannel channel, Dictionary <string, string> _reactionWatcher, Program program)
        {
            if (reaction.MessageId.ToString() == "586248421715738629")
            {
                var eventDetailChannel = (ISocketMessageChannel)discordSocketClient.GetChannel(572721078359556097);
                var embededMessage     = (IUserMessage)await eventDetailChannel.GetMessageAsync(586248421715738629);

                var embedInfo = embededMessage.Embeds.First();
                var guild     = discordSocketClient.Guilds.FirstOrDefault(x => x.Id == (ulong)505485680344956928);
                var user      = guild.GetUser(reaction.User.Value.Id);

                var embedBuilder = new EmbedBuilder
                {
                    Title       = embedInfo.Title,
                    Description = embedInfo.Description + "\n" + user.Username,
                    Footer      = new EmbedFooterBuilder {
                        Text = embedInfo.Footer.ToString()
                    },
                    Color = embedInfo.Color
                };

                await embededMessage.ModifyAsync(msg => msg.Embed = embedBuilder.Build());
            }

            var data = JsonExtension.GetJsonData("../../../Resources/irleventdata.txt");

            if (reaction.UserId != 504633036902498314 && data.Keys.Contains(reaction.MessageId.ToString()))
            {
                if (reaction.Emote.ToString() == "<:green_check:671412276594475018>")
                {
                    var deelnemersMsgData =
                        JsonExtension.ToDictionary <string[]>(data[reaction.MessageId.ToString()]);
                    var eventDetailChannel = reaction.Channel;
                    var msgId          = deelnemersMsgData.First().Key;
                    var embededMessage =
                        (IUserMessage)await eventDetailChannel.GetMessageAsync(ulong.Parse(msgId));

                    var embedInfo = embededMessage.Embeds.First();
                    var user      = discordSocketClient.GetUser(reaction.User.Value.Id);

                    var embedBuilder = new EmbedBuilder
                    {
                        Title       = embedInfo.Title,
                        Description = embedInfo.Description + "\n" + "<@!" + user.Id + ">",
                        Footer      = new EmbedFooterBuilder {
                            Text = embedInfo.Footer.ToString()
                        },
                        Color = embedInfo.Color
                    };
                    //Add permissions to see the general event channel
                    var d = deelnemersMsgData[reaction.MessageId + "0"];
                    var generalChannel = discordSocketClient.GetGuild(505485680344956928)
                                         .GetChannel(ulong.Parse(d.First()));
                    await generalChannel.AddPermissionOverwriteAsync(user,
                                                                     new OverwritePermissions().Modify(sendMessages: PermValue.Allow,
                                                                                                       viewChannel: PermValue.Allow, readMessageHistory: PermValue.Allow));

                    await embededMessage.ModifyAsync(msg => msg.Embed = embedBuilder.Build());
                }
                else if (reaction.Emote.ToString() == "<:blue_check:671413239992549387>")
                {
                    var user = discordSocketClient.GetUser(reaction.User.Value.Id);
                    var deelnemersMsgData =
                        JsonExtension.ToDictionary <string[]>(data[reaction.MessageId.ToString()]);
                    var d = deelnemersMsgData[reaction.MessageId + "0"];
                    var generalChannel = discordSocketClient.GetGuild(505485680344956928)
                                         .GetChannel(ulong.Parse(d.First()));
                    await generalChannel.AddPermissionOverwriteAsync(user,
                                                                     new OverwritePermissions().Modify(sendMessages: PermValue.Allow,
                                                                                                       viewChannel: PermValue.Allow, readMessageHistory: PermValue.Allow));
                }
                else if (reaction.Emote.ToString() == "<:red_check:671413258468720650>")
                {
                    var user           = discordSocketClient.GetUser(reaction.User.Value.Id);
                    var generalChannel = discordSocketClient.GetGuild(505485680344956928)
                                         .GetChannel(reaction.Channel.Id);
                    await generalChannel.AddPermissionOverwriteAsync(user,
                                                                     new OverwritePermissions().Modify(sendMessages: PermValue.Deny, viewChannel: PermValue.Deny,
                                                                                                       readMessageHistory: PermValue.Deny));
                }
            }

            if (reaction.MessageId.ToString() == "586248421715738629")
            {
                var messageID = reaction.MessageId;
                var userID    = reaction.UserId;
            }

            if (channel.Id == 549343990957211658)
            {
                var guild     = discordSocketClient.Guilds.FirstOrDefault(x => x.Id == (ulong)505485680344956928);
                var user      = guild.GetUser(reaction.User.Value.Id);
                var userRoles = user.Roles;
                foreach (var role in userRoles)
                {
                    if (role.Name == "Nieuwkomer")
                    {
                        var addRole    = guild.Roles.FirstOrDefault(x => x.Name == "Koos Rankloos");
                        var deleteRole = guild.Roles.FirstOrDefault(x => x.Name == "Nieuwkomer");
                        await user.AddRoleAsync(addRole);

                        await user.RemoveRoleAsync(deleteRole);
                    }
                }
            }

            if (channel.Id == 549350982081970176)
            {
                bool authenticationCheck()
                {
                    var guild     = discordSocketClient.Guilds.FirstOrDefault(x => x.Id == (ulong)505485680344956928);
                    var userRoles = guild.GetUser(reaction.User.Value.Id).Roles;

                    foreach (var role in userRoles)
                    {
                        if (role.Name == "Staff")
                        {
                            return(true);
                        }
                    }

                    return(false);
                }

                if (authenticationCheck())
                {
                    //{✅}
                    //{⛔}
                    // vinkje = status veranderen en actie uitvoeren om er in te zetten
                    // denied is status veranderen en user mention gebruiken
                    var messageFromReaction = await reaction.Channel.GetMessageAsync(reaction.MessageId);

                    var casted    = (IUserMessage)messageFromReaction;
                    var usedEmbed = casted.Embeds.First();
                    if (reaction.Emote.Name == "⛔")
                    {
                        var deniedEmbed = new EmbedBuilder();
                        //need staff check
                        try
                        {
                            deniedEmbed = new EmbedBuilder
                            {
                                Title        = usedEmbed.Title,
                                Description  = usedEmbed.Description.Replace("Waiting for approval", "Denied"),
                                ThumbnailUrl = usedEmbed.Thumbnail.Value.Url,
                                Color        = Color.Red
                            };
                        }
                        catch
                        {
                            deniedEmbed = new EmbedBuilder
                            {
                                Title       = usedEmbed.Title,
                                Description = usedEmbed.Description.Replace("Waiting for approval", "Denied"),
                                Color       = Color.Red
                            };
                        }

                        await casted.ModifyAsync(msg => msg.Embed = deniedEmbed.Build());

                        await casted.RemoveAllReactionsAsync();
                    }

                    if (reaction.Emote.Name == "✅")
                    {
                        var digitsOnly    = new Regex(@"[^\d]");
                        var oneSpace      = new Regex("[ ]{2,}");
                        var IDS           = oneSpace.Replace(digitsOnly.Replace(usedEmbed.Description, " "), "-").Split("-");
                        var discordId     = IDS[2];
                        var scoresaberId  = IDS[1];
                        var approvedEmbed = new EmbedBuilder();
                        try
                        {
                            approvedEmbed = new EmbedBuilder
                            {
                                Title        = usedEmbed.Title,
                                Description  = usedEmbed.Description.Replace("Waiting for approval", "Approved"),
                                ThumbnailUrl = usedEmbed.Thumbnail.Value.Url,
                                Color        = Color.Green
                            };
                        }
                        catch
                        {
                            approvedEmbed = new EmbedBuilder
                            {
                                Title       = usedEmbed.Title,
                                Description = usedEmbed.Description.Replace("Waiting for approval", "Approved"),
                                Color       = Color.Green
                            };
                        }


                        var check = await new RoleAssignment(discordSocketClient).LinkAccount(discordId,
                                                                                              scoresaberId);
                        if (check)
                        {
                            await casted.ModifyAsync(msg => msg.Embed = approvedEmbed.Build());

                            await casted.RemoveAllReactionsAsync();
                        }

                        var player = await new ScoresaberAPI(scoresaberId).GetPlayerFull();


                        DutchRankFeed.GiveRoleWithRank(player.playerInfo.CountryRank, scoresaberId, discordSocketClient);
                        var dutchGuild  = new GuildService(discordSocketClient, 505485680344956928);
                        var linkingUser = dutchGuild.Guild.GetUser(new RoleAssignment(discordSocketClient).GetDiscordIdWithScoresaberId(scoresaberId));
                        await dutchGuild.AddRole("Verified", linkingUser);


                        await dutchGuild.DeleteRole("Link my discord please", linkingUser);

                        await dutchGuild.DeleteRole("Koos Rankloos", linkingUser);

                        await program.UserJoinedMessage(linkingUser);
                    }
                }
            }

            //Add Roles from reactions added to specific channels
            if (channel.Id == 510227606822584330 || channel.Id == 627292184143724544)
            {
                var guild = discordSocketClient.GetGuild(505485680344956928);
                if (channel.Id == 510227606822584330)
                {
                    guild = discordSocketClient.GetGuild(505485680344956928);
                }
                else if (channel.Id == 627292184143724544)
                {
                    guild = discordSocketClient.GetGuild(627156958880858113);
                }
                var user = guild.GetUser(reaction.UserId);

                var t = reaction.Emote.ToString().Replace("<a:", "<:");

                foreach (var reactionDic in _reactionWatcher)
                {
                    if (reactionDic.Key == t)
                    {
                        var role = guild.Roles.FirstOrDefault(x => x.Name == reactionDic.Value);
                        await(user as IGuildUser).AddRoleAsync(role);
                    }
                }
            }

            if (reaction.UserId != 504633036902498314)
            {
                //Turn page from help command

                //right (681843066104971287)
                //left (681842980134584355)
                if (reaction.Emote.ToString() == "<:right:681843066104971287>")
                {
                    var t       = reaction.Message.ToString();
                    var message = await channel.GetMessageAsync(reaction.MessageId);

                    var casted    = (IUserMessage)message;
                    var usedEmbed = casted.Embeds.First();
                    var pagenr    = usedEmbed.Title.Split("[")[1].Split("]")[0];

                    var currentNr = int.Parse(pagenr.Split("/")[0]);
                    var maxNr     = int.Parse(pagenr.Split("/")[1]);

                    if (currentNr >= maxNr)
                    {
                        return;
                    }

                    casted.ModifyAsync(msg =>
                                       msg.Embed = Help.GetHelpList(discordSocketClient, int.Parse(pagenr.Split("/").First())));
                }

                if (reaction.Emote.ToString() == "<:left:681842980134584355>")
                {
                    var t       = reaction.Message.ToString();
                    var message = await channel.GetMessageAsync(reaction.MessageId);

                    var casted    = (IUserMessage)message;
                    var usedEmbed = casted.Embeds.First();
                    var pagenr    = usedEmbed.Title.Split("[")[1].Split("]")[0];

                    var currentNr = int.Parse(pagenr.Split("/")[0]);

                    if (currentNr <= 0)
                    {
                        return;
                    }

                    casted.ModifyAsync(msg =>
                                       msg.Embed = Help.GetHelpList(discordSocketClient,
                                                                    int.Parse(pagenr.Split("/").First()) - 2));
                }
            }
        }
示例#23
0
 public UpdateGuildCharacterNameProcessor(GuildService service, UpdateGuildCharacterName op) : base(op)
 {
     this.service = service;
 }
示例#24
0
 public AdminCommandProcessor(GuildService sv, AdminCommand op) : base(op)
 {
     this.service = sv;
 }
示例#25
0
 public ELOEventHandler(DiscordShardedClient client, CommandService commandService, GuildService guildService, LocalManagementService local, LogHandler handler, IServiceProvider provider) : base(client, commandService, guildService, local, handler, provider)
 {
     GuildSchedule.Service  = commandService;
     GuildSchedule.Provider = provider;
 }
示例#26
0
 public ConfigController(GuildService configService)
 {
     _guildService = configService;
 }
 public PurchaseGuildStorageProcessor(GuildService service, PurchaseGuildStorage op) : base(op)
 {
     this.service = service;
 }
 public ArrangeGuildStorageItemProcessor(GuildService service, ArrangeGuildStorageItem op) : base(op)
 {
     this.service = service;
 }
示例#29
0
        /// <inheritdoc />
        public async Task CreateInfractionAsync(InfractionType type, ulong subjectId, string reason, TimeSpan?duration)
        {
            AuthorizationService.RequireAuthenticatedGuild();
            AuthorizationService.RequireAuthenticatedUser();
            AuthorizationService.RequireClaims(_createInfractionClaimsByType[type]);

            var guild = await GuildService.GetGuildAsync(AuthorizationService.CurrentGuildId.Value);

            var subject = await UserService.GetGuildUserAsync(guild.Id, subjectId);

            if (reason == null)
            {
                throw new ArgumentNullException(nameof(reason));
            }

            if (((type == InfractionType.Notice) || (type == InfractionType.Warning)) &&
                string.IsNullOrWhiteSpace(reason))
            {
                throw new InvalidOperationException($"{type.ToString()} infractions require a reason to be given");
            }

            using (var transaction = await InfractionRepository.BeginCreateTransactionAsync())
            {
                if ((type == InfractionType.Mute) || (type == InfractionType.Ban))
                {
                    if (await InfractionRepository.AnyAsync(new InfractionSearchCriteria()
                    {
                        GuildId = guild.Id,
                        Types = new[] { type },
                        SubjectId = subject.Id,
                        IsRescinded = false,
                        IsDeleted = false
                    }))
                    {
                        throw new InvalidOperationException($"Discord user {subjectId} already has an active {type} infraction");
                    }
                }

                await InfractionRepository.CreateAsync(
                    new InfractionCreationData()
                {
                    GuildId     = guild.Id,
                    Type        = type,
                    SubjectId   = subjectId,
                    Reason      = reason,
                    Duration    = duration,
                    CreatedById = AuthorizationService.CurrentUserId.Value
                });

                transaction.Commit();
            }

            // TODO: Implement ModerationSyncBehavior to listen for mutes and bans that happen directly in Discord, instead of through bot commands,
            // and to read the Discord Audit Log to check for mutes and bans that were missed during downtime, and add all such actions to
            // the Infractions and ModerationActions repositories.
            // Note that we'll need to upgrade to the latest Discord.NET version to get access to the audit log.

            // Assuming that our Infractions repository is always correct, regarding the state of the Discord API.
            switch (type)
            {
            case InfractionType.Mute:
                await subject.AddRoleAsync(
                    await GetOrCreateMuteRoleInGuildAsync(guild));

                break;

            case InfractionType.Ban:
                await guild.AddBanAsync(subject, reason : reason);

                break;
            }
        }
示例#30
0
        public async Task Victoria(CommandContext context, [Description("El usuario al que le ganaste")] DiscordMember targetUser = null, [RemainingText] string resultStr = null)
        {
            var callingUser = context.Member;

            if (callingUser == targetUser)
            {
                return;
            }

            if (targetUser == null)
            {
                await context.ReplyAsync("Faltó escribir el oponente.");

                return;
            }

            if (targetUser.IsBot)
            {
                await context.ReplyAsync("No puedes reportar una victoria contra un bot!");

                return;
            }

            if (string.IsNullOrWhiteSpace(resultStr))
            {
                await context.ReplyAsync("Faltó escribir el resultado");

                return;
            }

            var messageValid = ResultService.GetResult(callingUser, targetUser, resultStr, out Result result);

            if (!messageValid)
            {
                await context.ReplyAsync($"No se escribió bien el resultado: {resultStr}. Ejemplo: 2-1");

                return;
            }

            var generalMessage = $"Resultado: \n\t{result.winner}\t{result.loser}. {result.message}";
            await targetUser.SendMessageAsync($"El usuario {callingUser.Mention} reportó una victoria {result.winner.score}-{result.loser.score} contra ti.");

            var channelName = ChannelRedirection.GetRedirectedChannel(context.Channel.Name);

            var channel = GuildService.FindTextChannel(context, channelName);
            var admins  = GuildService.FindRole(context, "admin");

            if (channel == null)
            {
                var roles    = callingUser.Roles;
                var roleText = GuildService.GetEntityNames(roles);
                generalMessage = $"{generalMessage}\nCanal: {context.Channel.Name} Roles: {roleText}";

                channelName = ChannelRedirection.TargetChannelName;
                channel     = GuildService.FindTextChannel(context, channelName);

                if (channel == null)
                {
                    await context.ReplyAsync($"{generalMessage}");

                    return;
                }
            }

            await GuildService.SendMessageToTextChannel(channel, generalMessage, admins);

            await context.ReplyAsync($"{generalMessage}");

            var hasAdmin = callingUser.Roles.Where(role => role.Name.Contains("admin")).Count() > 0;

            if (!hasAdmin)
            {
                var interaction = context.Client.GetInteractivity();

                await context.RespondAsync($"{targetUser.Mention} confirma la victoria de {callingUser.DisplayName}. Sólo escribe sí o no.");

                var response = await interaction.WaitForMessageAsync(context.WithPredicate().ToUser (targetUser).InSameChannel());

                if (response.TimedOut || response.Result.Content.Contains("no"))
                {
                    await context.RespondAsync(
                        $"{callingUser.Mention} no se ha aceptado tu victoria. Revisa si hay  un problema o contacta a un administrador.");

                    return;
                }
            }

            if (await DBConection.SetMatch(context.Guild.Id, callingUser, targetUser))
            {
                await context.RespondAsync($"Se ha reportado la victoria de {callingUser.DisplayName}");
            }
            else
            {
                await context.RespondAsync($"No hay peleas pendientes contra {targetUser.DisplayName}!");
            }
        }