public async Task HandleRoleReactionAdded(GuildEntity guild, SocketReaction reaction)
        {
            ulong guildId = Convert.ToUInt64(guild.Id);

            if (!_rolesUsedByGuild.ContainsKey(guildId))
            {
                return;
            }
            if (!_rolesUsedByGuild[guildId].Contains(reaction.Emote.Name))
            {
                return;
            }
            ulong roleId = (ulong)_roleByEmojiName[reaction.Emote.Name].GetValue(guild);

            if (roleId == default)
            {
                return;
            }
            var user = reaction.User.GetValueOrDefault();

            if (user == null || !(user is SocketGuildUser socketUser))
            {
                return;
            }

            string rolebanId = $"{user.Id}-{roleId}-RoleBan";
            var    roleBan   = _databaseHandler.Get <CaseEntity>(rolebanId);

            if (roleBan is { })
Пример #2
0
 private void ReConnectToRelayServer()
 {
     if (this.ConnectToRelayServer())
     {
         if (base.Entities == null || base.Entities.Count <IEntity>() <= 0)
         {
             return;
         }
         foreach (IEntity entity in base.Entities)
         {
             if (entity != null && entity.Tag != null && entity.Tag is GuildEntity)
             {
                 GuildEntity guildEntity = entity.Tag as GuildEntity;
                 if (guildEntity != null && guildEntity.ChatRoom != null)
                 {
                     this.ChatRelay.SendMemberInfo(guildEntity.ChatRoom.GuildID, this.GetGameMembers(guildEntity.ChatRoom.GuildID), true);
                     this.ChatRelay.RequestMemberInfos(guildEntity.GuildID);
                 }
             }
             else
             {
                 Log <GuildService> .Logger.ErrorFormat("Detect GuildEntity is null in ReconnectToRelayServer()", new object[0]);
             }
         }
     }
 }
Пример #3
0
        public bool AcceptJoin(GuildEntity guild, GuildMemberRank operatorRank, GuildMember targetMember, bool accept)
        {
            Log <GuildAPI> .Logger.InfoFormat("AcceptJoin: GuildMemberRank[{0}]", operatorRank);

            if (!operatorRank.HasAcceptJoinPermission(targetMember.Rank))
            {
                return(false);
            }
            if (accept)
            {
                Log <GuildAPI> .Logger.InfoFormat("UserJoinApply: GuildSN[{0}], NexonSN[{1}], CharacterSN[{2}], CharacterName[{3}]", new object[]
                {
                    guild.GuildSN,
                    targetMember.Key.NexonSN,
                    targetMember.Key.CharacterSN,
                    targetMember.Key.CharacterName
                });

                HeroesGuild.UserJoinApply(GuildAPI.ServerCode, guild.GuildSN, targetMember.Key.NexonSN, targetMember.Key.CharacterSN, targetMember.Key.CharacterName);
                return(true);
            }
            Log <GuildAPI> .Logger.InfoFormat("UserJoinReject: GuildSN[{0}], NexonSN[{1}], CharacterSN[{2}], CharacterName[{3}]", new object[]
            {
                guild.GuildSN,
                targetMember.Key.NexonSN,
                targetMember.Key.CharacterSN,
                targetMember.Key.CharacterName
            });

            HeroesGuild.UserJoinReject(GuildAPI.ServerCode, guild.GuildSN, targetMember.Key.NexonSN, targetMember.Key.CharacterSN, targetMember.Key.CharacterName);
            return(true);
        }
Пример #4
0
        public bool ChangeRank(GuildEntity guild, GuildMemberRank operatorRank, GuildMember targetMember, GuildMemberRank toRank)
        {
            Log <GuildAPI> .Logger.InfoFormat("ChangeRank: MemberRank[{0}], MemberSN[{1}], ToRank[{2}]", operatorRank, targetMember.Key.NexonSN, toRank);

            if (toRank == GuildMemberRank.Unknown)
            {
                if (operatorRank.HasSecedePermission(targetMember.Rank, toRank))
                {
                    Log <GuildAPI> .Logger.InfoFormat("UserSecede: ServiceCode[{0}], GuildSN[{1}], MemberNexonSN[{2}]", GuildAPI.ServerCode, guild.GuildSN, targetMember.Key.NexonSN);

                    HeroesGuild.UserSecede(GuildAPI.ServerCode, guild.GuildSN, targetMember.Key.NexonSN, targetMember.Key.CharacterSN, targetMember.Key.CharacterName);
                    using (HeroesDataContext heroesDataContext = new HeroesDataContext())
                    {
                        heroesDataContext.UpdateGuildCharacterInfo(new long?(targetMember.Key.CID), new long?(0L));
                        GuildLog.AddGuildLedger(new LogData((long)guild.GuildSN, targetMember.Key.CID, OperationType.GainGuildPoint, GuildLedgerEventType.UpdateGuildUserPoint, "0", "Secede"));
                    }
                    return(true);
                }
            }
            else if (operatorRank.HasRankChangePermission(targetMember.Rank, toRank))
            {
                Log <GuildAPI> .Logger.InfoFormat("UserTypeModify: ServiceCode[{0}], GuildSN[{1}], MemberNexonSN[{2}]", GuildAPI.ServerCode, guild.GuildSN, targetMember.Key.NexonSN);

                HeroesGuild.UserTypeModify(GuildAPI.ServerCode, guild.GuildSN, targetMember.Key.NexonSN, targetMember.Key.CharacterSN, targetMember.Key.CharacterName, this.ConvertToGroupUserType(toRank.ToGroupUserType()));
                return(true);
            }
            return(false);
        }
Пример #5
0
        public bool CloseGuild(GuildEntity guild, GuildMemberKey key)
        {
            if (guild == null || key == null)
            {
                Log <HeroesGuildAPI> .Logger.ErrorFormat("parameter is null in CloseGuild()", new object[0]);

                return(false);
            }
            int num = -1;

            try
            {
                Log <HeroesGuildAPI> .Logger.InfoFormat("Remove: GuildMemberKey[{0}]", key);

                HeroesGuildDBDataContext heroesGuildDBDataContext = new HeroesGuildDBDataContext();
                num = heroesGuildDBDataContext.GuildRemove(new int?(GuildAPI.ServerCode), new int?(key.NexonSN), new int?(guild.GuildSN));
            }
            catch (Exception ex)
            {
                Log <HeroesGuildAPI> .Logger.Error("Remove(CloseGuild) Error: ", ex);
            }
            if (num == 0)
            {
                GuildLog.AddGuildLedger(new LogData((long)guild.GuildSN, key.CID, OperationType.HeroesCore_CloseGuild, GuildLedgerEventType.Success, string.Format("GuildSn: {0}, GuildToString: {1}", guild.GuildSN, guild.ToString())));
            }
            else
            {
                GuildLog.AddGuildLedger(new LogData((long)guild.GuildSN, key.CID, OperationType.HeroesCore_CloseGuild, GuildLedgerEventType.DatabaseFail, string.Format("GuildSn: {0}, GuildToString: {1}", guild.GuildSN, guild.ToString())));
            }
            return(num == 0);
        }
Пример #6
0
        protected override IEntity MakeEntity(long id, string category)
        {
            IEntity     entity      = base.MakeEntity(id, category);
            GuildEntity guildEntity = new GuildEntity(this, entity, id);

            guildEntity.NewbieRecommendChanged += new EventHandler(this.GuildEntity_UpdateNewbieRecommend);
            entity.Tag         = guildEntity;
            guildEntity.Entity = entity;
            entity.Closed     += new EventHandler((object sender, EventArgs e) =>
            {
                this.OnlineGuildIDList.Remove(id);
                this.NewbieRecommendGuild.Remove(id);
                GuildEntity tag = entity.Tag as GuildEntity;
                if (tag != null)
                {
                    tag.Close();
                }
                Log <GuildService> .Logger.WarnFormat("<GID : {0}> guildEntity closed...", entity.ID);
            });
            entity.Closed += new EventHandler(this.Entity_Closed);
            entity.Used   += new EventHandler <EventArgs <IEntityAdapter> >((object sender, EventArgs <IEntityAdapter> e) =>
            {
                if (entity.UseCount == 0)
                {
                    entity.Close();
                }
            });
            this.OnlineGuildIDList.Add(id);
            Log <GuildService> .Logger.WarnFormat("<GID : {0}> guildEntity makeEntity...", entity.ID);

            return(entity);
        }
Пример #7
0
        public void JoinWebChatMember(HeroesGuildChatRelay server, ChatJoinEventArg arg)
        {
            if (!FeatureMatrix.IsEnable("UseHeroesGuildChatServer"))
            {
                arg.Callback(null, arg.AsyncResult);
            }
            Log <GuildService> .Logger.InfoFormat("JoinWebChatMember is called. [ {0}, {1}, {2} ]", arg.GuildKey, arg.CID, arg.Sender);

            IEntity entityByID = base.GetEntityByID(arg.GuildKey);

            if (entityByID != null && entityByID.Tag is GuildEntity)
            {
                Log <GuildService> .Logger.InfoFormat("JoinWebChatMember is called. [ {0}, {1}, {2}, found ]", arg.GuildKey, arg.CID, arg.Sender);

                GuildEntity entity = entityByID.Tag as GuildEntity;
                if (this.DoJoinWebChatMember(entity, server, arg))
                {
                    arg.Callback(this.GetGameMembers(arg.GuildKey), arg.AsyncResult);
                    return;
                }
                Log <GuildService> .Logger.WarnFormat("JoinWebChatMember(). DoJoinWebChatMember is failed [ {0}, {1}, {2} ]", arg.GuildKey, arg.CID, arg.Sender);
            }
            else
            {
                Log <GuildService> .Logger.InfoFormat("JoinWebChatMember(). cannot find guild entity [ {0}, {1}, {2} ]", arg.GuildKey, arg.CID, arg.Sender);
            }
            arg.Callback(null, arg.AsyncResult);
        }
        public override IEnumerable <object> Run()
        {
            this.Finished = true;
            for (int i = 0; i < 3; ++i)
            {
                if (this.service.NewbieRecommendGuild.Count == 0)
                {
                    yield return((object)new FailMessage("[FindNewbieRecommendGuildProcessor] service.NewbieRecommendGuild.Count"));

                    yield break;
                }
                else
                {
                    int     selectedIndex = FindNewbieRecommendGuildProcessor.randomIndex.Next(this.service.NewbieRecommendGuild.Count - 1);
                    long    guildID       = this.service.NewbieRecommendGuild[selectedIndex];
                    IEntity entity        = this.service.GetEntityByID(guildID);
                    if (entity != null)
                    {
                        GuildEntity guild = entity.Tag as GuildEntity;
                        if (guild != null && guild.GuildInfo != null && (guild.GuildInfo.IsNewbieRecommend && guild.OnlineMembers.Count != 0))
                        {
                            yield return((object)guild.GuildInfo);

                            yield break;
                        }
                        else
                        {
                            this.service.NewbieRecommendGuild.Remove(guildID);
                        }
                    }
                }
            }
            yield return((object)new FailMessage("[FindNewbieRecommendGuildProcessor] fail"));
        }
Пример #9
0
        public void ResetOnlineGuildDailyGPScheduleFunc()
        {
            HeroesDataContext  heroesDataContext = new HeroesDataContext();
            List <long>        list = new List <long>(this.OnlineGuildIDList);
            GuildGainGPMessage guildGainGPMessage = new GuildGainGPMessage(0L);

            foreach (long id in list)
            {
                IEntity entityByID = base.GetEntityByID(id);
                if (entityByID != null && !entityByID.IsClosed)
                {
                    GuildEntity guildEntity = entityByID.Tag as GuildEntity;
                    if (entityByID != null)
                    {
                        heroesDataContext.ResetInGameGuildDailyGainGP(guildEntity.GuildSN);
                        guildEntity.GuildInfo.DailyGainGP.Clear();
                        guildGainGPMessage.GuildPoint = guildEntity.GuildInfo.GuildPoint;
                        foreach (OnlineGuildMember onlineGuildMember in guildEntity.OnlineMembers.Values)
                        {
                            onlineGuildMember.RequestFrontendOperation(SendPacket.Create <GuildGainGPMessage>(guildGainGPMessage));
                        }
                    }
                }
            }
            DateTime d = GuildContents.GetPrevDailyGPResetTime() + TimeSpan.FromDays(1.0);

            this.DailyGPResetScheduleID = Scheduler.Schedule(JobProcessor.Current, Job.Create(new Action(this.ResetOnlineGuildDailyGPScheduleFunc)), d - DateTime.UtcNow + TimeSpan.FromSeconds(30.0));
        }
Пример #10
0
        public HeroesGuildMemberInfo GetMemberInfo(GuildEntity guild, GuildMemberKey key)
        {
            HeroesGuildMemberInfo result;

            try
            {
                Log <GuildAPI> .Logger.InfoFormat("GroupMemberGetInfo: ServerCode[{0}], GuildSN[{1}], MemberNexonSN[{2}]", GuildAPI.ServerCode, guild.GuildSN, key.NexonSN);

                GroupMemberInfo     groupMemberInfo = HeroesGuild.GroupMemberGetInfo(GuildAPI.ServerCode, guild.GuildSN, key.CharacterSN, key.CharacterName);
                HeroesGuildUserType value           = this.ConvertToHeroesGuildUserType(groupMemberInfo.emGroupUserType);
                if (value.ToGuildMemberRank().IsInvalid())
                {
                    result = null;
                }
                else
                {
                    result = new HeroesGuildMemberInfo(groupMemberInfo);
                }
            }
            catch (GroupException ex)
            {
                if (ex.ErrorCode != 15)
                {
                    Log <GuildService> .Logger.Error("GroupMemberGetInfo Error", ex);
                }
                result = null;
            }
            catch (Exception ex2)
            {
                Log <GuildService> .Logger.Error("GroupMemberGetInfo Error", ex2);

                result = null;
            }
            return(result);
        }
Пример #11
0
        public OnlineGuildMember(GuildEntity parent, GuildMemberKey key, long fid)
        {
            this.Parent       = parent;
            this.Key          = key;
            this.FID          = fid;
            this.FrontendConn = GuildService.Instance.Connect(this.Parent.Entity, new Location
            {
                ID       = fid,
                Category = "FrontendServiceCore.FrontendService"
            });
            this.PlayerConn = GuildService.Instance.Connect(this.Parent.Entity, new Location
            {
                ID       = key.CID,
                Category = "PlayerService.PlayerService"
            });
            this.PlayerConn.Closed += delegate(object _, EventArgs <IEntityProxy> __)
            {
                Log <OnlineGuildMember> .Logger.WarnFormat("[{0}] Charater Logout Detected", this.Key.CharacterName);

                GuildService.Instance.LeaveChatRoom(this);
                this.Disconnect();
                this.Parent.Disconnect(this.Key);
                this.Parent.Sync();
            };
            this.CashShopConn = GuildService.Instance.Connect(this.Parent.Entity, new Location
            {
                ID       = (long)key.NexonSN,
                Category = "CashShopService.CashShopService"
            });
            this.Observables = new ObservableCollection();
            this.BriefGuildInfoObservable = this.Observables.AddObservable(this.Key.CID, "BriefGuildInfo");
        }
Пример #12
0
        private GuildWebHookSettings GetWebHookSettings(SocketGuild guild, GuildEntity guildEntity)
        {
            return(new GuildWebHookSettings
            {
                Guild = guild,

                #nullable enable
                OutputChannel = new Dictionary <PostType, ITextChannel?> {
Пример #13
0
        public void KickFromChatRoom(GuildEntity entity, GuildMemberKey key)
        {
            if (this.ChatRelay != null)
            {
                GuildChatWebMember guildChatWebMember = this.ChatRelay[key.CID];
                if (guildChatWebMember != null)
                {
                    Log <GuildService> .Logger.InfoFormat("KickFromChatRoom is called. [ {0} {1} {2} ]", guildChatWebMember.GuildID, guildChatWebMember.CID, guildChatWebMember.Sender);

                    this.ChatRelay.KickMember(guildChatWebMember.GuildID, guildChatWebMember.CID);
                    this.LeaveChatRoom(guildChatWebMember);
                }
            }
        }
Пример #14
0
        private void GuildEntity_UpdateNewbieRecommend(object sender, EventArgs arg)
        {
            GuildEntity guildEntity = sender as GuildEntity;

            if (guildEntity != null && guildEntity.GuildInfo != null)
            {
                if (guildEntity.GuildInfo.IsNewbieRecommend && guildEntity.OnlineMembers.Count != 0)
                {
                    this.NewbieRecommendGuild.Add(guildEntity.GuildID);
                    return;
                }
                this.NewbieRecommendGuild.Remove(guildEntity.GuildID);
            }
        }
        public async void InitForGuild(SocketGuild guild, GuildEntity guildEntity)
        {
            if (_rolesUsedByGuild.ContainsKey(guild.Id))
            {
                _rolesUsedByGuild.Remove(guild.Id);
            }
            var list = new HashSet <string>();

            _rolesUsedByGuild.Add(guild.Id, list);

            foreach (var entry in _roleByEmojiName)
            {
                ulong roleId = (ulong)entry.Value.GetValue(guildEntity);
                if (roleId == default)
                {
                    continue;
                }
                list.Add(entry.Key);
            }

            if (!guildEntity.UseRolesCommandSystem)
            {
                var rolesChannelId = guildEntity.RolesRequestChannelId;
                if (rolesChannelId == default)
                {
                    return;
                }
                var rolesChannel = guild.GetTextChannel(rolesChannelId);
                if (rolesChannel == null)
                {
                    return;
                }
                var pinnedMessages = await rolesChannel.GetPinnedMessagesAsync();

                if (pinnedMessages.Count == 0 || !pinnedMessages.Any(m => m.Author.Id == _botClient.CurrentUser.Id))
                {
                    await CreateRoleReactionMessage(rolesChannel, guildEntity);
                }
                else
                {
                    await EditRoleReactionMessage(rolesChannel.Guild.Id, pinnedMessages.Last() as RestUserMessage);
                }
            }

            if (guildEntity.SupportRequestChannelInfoId != 0 && !string.IsNullOrWhiteSpace(guildEntity.SupportRequestInfo))
            {
                await AddSupportInfoChannel(guild, guildEntity.SupportRequestChannelInfoId, guildEntity.SupportRequestInfo);
            }
        }
Пример #16
0
        public void LeaveChatRoom(IGuildChatMember member)
        {
            IEntity entityByID = base.GetEntityByID(member.GuildID);

            if (entityByID != null && entityByID.Tag is GuildEntity)
            {
                GuildEntity guildEntity = entityByID.Tag as GuildEntity;
                if (guildEntity != null && guildEntity.ChatRoom != null)
                {
                    Log <GuildService> .Logger.InfoFormat("LeaveChatRoom is called. [ {0}, {1}, {2} ]", member.GuildID, member.CID, member.Sender);

                    guildEntity.ChatRoom.LeaveMember(member);
                }
            }
        }
Пример #17
0
        private string GetGameMembers(long guildID)
        {
            string  result     = "";
            IEntity entityByID = base.GetEntityByID(guildID);

            if (entityByID != null && entityByID.Tag != null)
            {
                GuildEntity guildEntity = entityByID.Tag as GuildEntity;
                if (guildEntity != null)
                {
                    result = string.Join(",", guildEntity.OnlineMembers.Keys.ToArray <string>());
                }
            }
            return(result);
        }
Пример #18
0
        public bool GuildChatToGameClient(long gid, long cid, string senderName, string message, bool isFromClient)
        {
            IEntity entityByID = base.GetEntityByID(gid);

            if (entityByID != null)
            {
                GuildEntity guildEntity = entityByID.Tag as GuildEntity;
                if (guildEntity != null && guildEntity.ChatRoom != null)
                {
                    guildEntity.ChatRoom.OnReceiveChatMessage(cid, senderName, message, isFromClient);
                    return(true);
                }
            }
            return(false);
        }
Пример #19
0
        private void WebChat(HeroesGuildChatRelay server, ChatEventArg arg)
        {
            GuildChatWebMember guildChatWebMember = server[arg.CID];

            if (guildChatWebMember != null)
            {
                IEntity entityByID = base.GetEntityByID(guildChatWebMember.GuildID);
                if (entityByID != null)
                {
                    GuildEntity guildEntity = entityByID.Tag as GuildEntity;
                    if (guildEntity != null && guildEntity.ChatRoom != null)
                    {
                        guildEntity.ChatRoom.OnReceiveChatMessage(guildChatWebMember.CID, guildChatWebMember.Sender, arg.Message, false);
                    }
                }
            }
        }
Пример #20
0
        public bool JoinChatRoomFromGame(GuildEntity entity, GuildMemberKey key)
        {
            Log <GuildService> .Logger.InfoFormat("JoinChatRoomFromGame is called", new object[0]);

            if (entity != null)
            {
                OnlineGuildMember onlineMember = entity.GetOnlineMember(key.CID);
                if (onlineMember != null)
                {
                    Log <GuildService> .Logger.InfoFormat("JoinChatRoomFromGame onlineGuildMember is not null", new object[0]);

                    GuildChatRoom chatRoom = entity.ChatRoom;
                    return(chatRoom.JoinGameMember(onlineMember));
                }
                Log <GuildService> .Logger.WarnFormat("JoinChatRoomFromGame onlineGuildMember is null", new object[0]);
            }
            return(false);
        }
Пример #21
0
 public HeroesGuildMemberInfo GetMemberInfo(GuildEntity guild, GuildMemberKey key)
 {
     try
     {
         HeroesGuildDBDataContext             heroesGuildDBDataContext = new HeroesGuildDBDataContext();
         List <GuildGroupMemberGetInfoResult> source = heroesGuildDBDataContext.GuildGroupMemberGetInfo(new int?(GuildAPI.ServerCode), new int?(guild.GuildSN), new int?(key.CharacterSN), key.CharacterName).ToList <GuildGroupMemberGetInfoResult>();
         GuildGroupMemberGetInfoResult        guildGroupMemberGetInfoResult = source.FirstOrDefault <GuildGroupMemberGetInfoResult>();
         if (source.Count <GuildGroupMemberGetInfoResult>() == 1 && guildGroupMemberGetInfoResult != null)
         {
             return(new HeroesGuildMemberInfo(guildGroupMemberGetInfoResult.CharacterName, (long)guildGroupMemberGetInfoResult.CharacterSN, (HeroesGuildUserType)guildGroupMemberGetInfoResult.emGroupUserType, guildGroupMemberGetInfoResult.GuildSN, guildGroupMemberGetInfoResult.Intro, guildGroupMemberGetInfoResult.NameInGroup, guildGroupMemberGetInfoResult.NexonSN));
         }
     }
     catch (Exception ex)
     {
         Log <HeroesGuildAPI> .Logger.Error("Error in GetMemberInfo(GuildEntity guild, GuildMemberKey key)", ex);
     }
     return(null);
 }
Пример #22
0
        public void SyncWebMember(HeroesGuildChatRelay server, ChatMemberSyncEventArg arg)
        {
            Log <GuildService> .Logger.InfoFormat("SyncWebMember is called. [ {0} ]", arg.GuildKey);

            IEntity entityByID = base.GetEntityByID(arg.GuildKey);

            if (entityByID != null && entityByID.Tag is GuildEntity)
            {
                Log <GuildService> .Logger.InfoFormat("SyncWebMember is called. [ {0}, found gid ]", arg.GuildKey);

                GuildEntity guildEntity = entityByID.Tag as GuildEntity;
                if (this.DoSyncWebMember(guildEntity, server, arg))
                {
                    return;
                }
                Log <GuildService> .Logger.ErrorFormat("DoSyncWebMember is failed [{0}, {1}, {2}]", guildEntity.ToString(), server.ToString(), arg.ToString());
            }
        }
Пример #23
0
        public void LeaveGuild(GuildEntity guild, GuildMemberKey key)
        {
            int num = -1;

            try
            {
                HeroesGuildDBDataContext heroesGuildDBDataContext = new HeroesGuildDBDataContext();
                num = heroesGuildDBDataContext.GuildUserSecede(new int?(GuildAPI.ServerCode), new int?(guild.GuildSN), new int?(key.NexonSN), new long?((long)key.CharacterSN), key.CharacterName);
            }
            catch (Exception ex)
            {
                Log <HeroesGuildAPI> .Logger.Error("Error in LeaveGuild(GuildEntity guild, GuildMemberKey key)", ex);
            }
            if (num == 0)
            {
                GuildLog.AddGuildLedger(new LogData((long)guild.GuildSN, key.CID, OperationType.HeroesCore_LeaveGuild, GuildLedgerEventType.Success, string.Format("GuildSn: {0}, GuildToString: {1}", guild.GuildSN, guild.ToString(), key.ToString())));
                return;
            }
            GuildLog.AddGuildLedger(new LogData((long)guild.GuildSN, key.CID, OperationType.HeroesCore_LeaveGuild, GuildLedgerEventType.DatabaseFail, string.Format("GuildSn: {0}, GuildToString: {1}", guild.GuildSN, guild.ToString(), key.ToString())));
        }
Пример #24
0
        private void CreateGitHubListenerForGuild(SocketGuild guild, GuildEntity guildEntity)
        {
            if (string.IsNullOrWhiteSpace(guildEntity.GitHubWebHookListenToUrl))   // || guildEntity.GitHubWebHookMessageChannelId == default)
            {
                return;
            }

            var settings = GetWebHookSettings(guild, guildEntity);

            guildEntity.GithubListener = new GitHubListener(guildEntity.GitHubWebHookListenToUrl, settings, (msg, severity, ex) =>
            {
                if (ex != null)
                {
                    settings.ErrorOutputChannel?.SendMessageAsync($"WebHook [{severity}]: {msg}:\n{ex}");
                }
                else
                {
                    settings.ErrorOutputChannel?.SendMessageAsync($"WebHook [{severity}]: {msg}");
                }
            });
        }
Пример #25
0
        public bool ChangeMaster(GuildEntity guild, GuildMember newMaster, GuildMember oldMaster)
        {
            GuildMemberKey      key   = newMaster.Key;
            HeroesGuildUserType value = GuildMemberRank.Operator.ToGroupUserType();
            int num = -1;

            try
            {
                HeroesGuildDBDataContext heroesGuildDBDataContext = new HeroesGuildDBDataContext();
                num = heroesGuildDBDataContext.GuildGroupChangeMaster(new int?(GuildAPI.ServerCode), new int?(guild.GuildSN), new int?(key.NexonSN), new long?((long)key.CharacterSN), key.CharacterName, new int?((int)value));
            }
            catch (Exception ex)
            {
                Log <HeroesGuildAPI> .Logger.Error("Error in ChangeMaster", ex);
            }
            if (num == 0)
            {
                GuildLog.AddGuildLedger(new LogData((long)guild.GuildSN, newMaster.Key.CID, OperationType.HeroesCore_ChangeMaster, GuildLedgerEventType.Success, guild.GuildInfo.MasterName, newMaster.Key.CharacterName));
                return(true);
            }
            GuildLog.AddGuildLedger(new LogData((long)guild.GuildSN, newMaster.Key.CID, OperationType.HeroesCore_ChangeMaster, GuildLedgerEventType.DatabaseFail, guild.GuildInfo.MasterName, newMaster.Key.CharacterName));
            return(false);
        }
Пример #26
0
        public bool ChangeMaster(GuildEntity guild, GuildMember newMaster, GuildMember oldMaster)
        {
            if (!FeatureMatrix.IsEnable("EnableChangeGuildMaster"))
            {
                return(false);
            }
            GuildMemberKey key = newMaster.Key;

            Log <GuildAPI> .Logger.InfoFormat("ChangeMaster: Guild[{0}], newMasterKey[{1}], oldMasterKey[{2}]", guild.ToString(), key.ToString(), oldMaster.Key.ToString());

            Log <GuildAPI> .Logger.InfoFormat("ChangeMaster: serverCode[{0}] guildSn[{1}] NexonSN[{2}] C_SN[{3}] Name[{4}] Rank[{5}]", new object[]
            {
                GuildAPI.ServerCode,
                guild.GuildSN,
                key.NexonSN,
                key.CharacterSN,
                key.CharacterName,
                GuildMemberRank.Operator.ToGroupUserType()
            });

            HeroesGuildUserType type = GuildMemberRank.Operator.ToGroupUserType();

            return(HeroesGuild.GroupChangeMaster(GuildAPI.ServerCode, guild.GuildSN, key.NexonSN, (long)key.CharacterSN, key.CharacterName, this.ConvertToGroupUserType(type)));
        }
Пример #27
0
        public bool CloseGuild(GuildEntity guild, GuildMemberKey key)
        {
            Log <GuildAPI> .Logger.InfoFormat("Remove: GuildMemberKey[{0}]", key);

            try
            {
                HeroesGuild.Remove(GuildAPI.ServerCode, key.NexonSN, guild.GuildSN);
            }
            catch (GroupException ex)
            {
                if (ex.ErrorCode != 6)
                {
                    Log <GuildService> .Logger.Error("Remove(CloseGuild) Error: ", ex);
                }
                return(false);
            }
            catch (Exception ex2)
            {
                Log <GuildService> .Logger.Error("Remove(CloseGuild) Error: ", ex2);

                return(false);
            }
            return(true);
        }
Пример #28
0
        public bool AcceptJoin(GuildEntity guild, GuildMemberRank operatorRank, GuildMember targetMember, bool accept)
        {
            int num = -1;

            try
            {
                if (operatorRank.HasAcceptJoinPermission(targetMember.Rank))
                {
                    HeroesGuildDBDataContext heroesGuildDBDataContext = new HeroesGuildDBDataContext();
                    if (accept)
                    {
                        num = heroesGuildDBDataContext.GuildUserJoinApply(new int?(GuildAPI.ServerCode), new int?(guild.GuildSN), new int?(targetMember.Key.NexonSN), new long?((long)targetMember.Key.CharacterSN), targetMember.Key.CharacterName);
                    }
                    else
                    {
                        num = heroesGuildDBDataContext.GuildUserJoinReject(new int?(GuildAPI.ServerCode), new int?(guild.GuildSN), new int?(targetMember.Key.NexonSN), new long?((long)targetMember.Key.CharacterSN), targetMember.Key.CharacterName);
                    }
                }
            }
            catch (Exception ex)
            {
                Log <HeroesGuildAPI> .Logger.Error("Error in AcceptJoin(GuildEntity guild, GuildMemberRank operatorRank, GuildMember targetMember, bool accept)", ex);
            }
            GuildLedgerEventType eventType;

            if (num == 0)
            {
                eventType = GuildLedgerEventType.Success;
            }
            else
            {
                eventType = GuildLedgerEventType.DatabaseFail;
            }
            GuildLog.AddGuildLedger(new LogData((long)guild.GuildSN, targetMember.Key.CID, OperationType.HeroesCore_ResponseJoin, eventType, string.Format("GuildSn: {0}, isAccept: {1}", guild.GuildSN, accept.ToString()), targetMember.Key.ToString()));
            return(num == 0);
        }
Пример #29
0
        private bool DoJoinWebChatMember(GuildEntity entity, HeroesGuildChatRelay server, ChatJoinEventArg arg)
        {
            if (entity != null && entity.ChatRoom != null)
            {
                Log <GuildService> .Logger.InfoFormat("JoinWebChatMember is called. [ {0}, {1}, {2} ]", arg.GuildKey, arg.CID, arg.Sender);

                GuildChatWebMember member = new GuildChatWebMember(arg.CID, arg.GuildKey, arg.Sender, server);
                if (entity.ChatRoom.JoinWebMember(member))
                {
                    string gameMembers = this.GetGameMembers(arg.GuildKey);
                    Log <GuildService> .Logger.InfoFormat("JoinWebChatMember is called. [ {0}, {1}, {2}, {3} ]", new object[]
                    {
                        arg.GuildKey,
                        arg.CID,
                        arg.Sender,
                        gameMembers
                    });

                    server.JoinWebMember(member);
                    return(true);
                }
            }
            return(false);
        }
Пример #30
0
        private bool DoSyncWebMember(GuildEntity entity, HeroesGuildChatRelay server, ChatMemberSyncEventArg arg)
        {
            if (entity != null && entity.ChatRoom != null)
            {
                GuildChatRoom chatRoom = entity.ChatRoom;
                chatRoom.LeaveAllMembers(entity.GuildID);
                foreach (KeyValuePair <long, string> keyValuePair in arg.Members)
                {
                    Log <GuildService> .Logger.InfoFormat("DoSyncWebMember is called. [ {0}, {1}, {2} ]", arg.GuildKey, keyValuePair.Key, keyValuePair.Value);

                    GuildChatWebMember guildChatWebMember = new GuildChatWebMember(keyValuePair.Key, arg.GuildKey, keyValuePair.Value, server);
                    if (!chatRoom.JoinWebMember(guildChatWebMember))
                    {
                        this.ChatRelay.KickMember(guildChatWebMember.GuildID, guildChatWebMember.CID);
                    }
                    else
                    {
                        server.JoinWebMember(guildChatWebMember);
                    }
                }
                return(true);
            }
            return(false);
        }