Exemplo n.º 1
0
        /// <summary>
        /// 处理角色禁言
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private async Task <string> OnHandleServerBlacklist(JObject obj)
        {
            var channel_arr = obj["channel"].ToObject <short[]>();

            var role_list = obj["role"].ToString().Split(',');

            if (channel_arr.Length > 0)
            {
                var type       = (MuteType)obj["type"].ToObject <short>();
                var final_date = DateTime.UtcNow;
                switch (type)
                {
                case MuteType.Mute_Hour:
                    final_date = final_date.AddHours(1);
                    break;

                case MuteType.Mute_Month:
                    final_date = final_date.AddMonths(1);
                    break;

                case MuteType.Mute_Year:
                    final_date = final_date.AddYears(1);
                    break;

                case MuteType.Mute_Forever:
                    final_date = final_date.AddYears(99);
                    break;

                case MuteType.Mute_Cancel:
                    final_date.AddDays(-1);
                    break;
                }
                //TODO 接口不支持多用户暂时写死
                var role_uuid = await RPGServerPersistenceManager.Instance.GetRoleUUIDByNameAsync(role_list[0], this);

                var result = await TLGMUtil.ForbidChat(this, role_uuid, final_date);

                return(ResponseResult(result));
            }

            return(ResponseResult(false));
        }
Exemplo n.º 2
0
        /// <summary>
        /// GMT系统广播
        /// </summary>
        /// <param name="obj"></param>
        /// <returns></returns>
        private Task <string> OnHandleServerAnnouncement(JObject obj)
        {
            var channel_arr = obj["channel"].ToObject <List <short> >();

            if (channel_arr.Count > 0)
            {
                bool               result          = false;
                var                primary_channel = channel_arr.Contains(ClientChatRequest.CHANNEL_SYSTEM) ? ClientChatRequest.CHANNEL_SYSTEM : ClientChatRequest.CHANNEL_TYPE_WORLD;
                List <string>      groups          = obj["group"].ToObject <List <string> >();
                TLClientChatNotify notify          = new TLClientChatNotify();
                notify.channel_type = primary_channel;
                channel_arr.Remove(primary_channel);
                if (channel_arr.Count > 0)
                {
                    notify.show_channel = channel_arr.ToArray();
                }
                notify.func_type = obj["style"].ToObject <short>();
                notify.content   = obj["text"].ToString();
                result           = TLGMUtil.PushPublicMessage(this, (CHANNEL_TYPE)primary_channel, notify, groups);
                return(Task.FromResult(ResponseResult(result)));
            }

            return(Task.FromResult(ResponseResult(false)));
        }