Exemplo n.º 1
0
        internal static SlackBotState Initialize(string botUserId, string botUsername)
        {
            var state = new SlackBotState();

            state.BotUserId   = botUserId;
            state.BotUsername = botUsername;

            return(state);
        }
Exemplo n.º 2
0
        public static SlackBotState InitializeFromRtmStart(JObject data)
        {
            var state = new SlackBotState();

            state.BotUserId   = data["self"]["id"].Value <string>();
            state.BotUsername = data["self"]["name"].Value <string>();

            foreach (var user in data["users"])
            {
                if (user["deleted"].Value <bool>())
                {
                    continue;
                }

                state.AddUser(user["id"].Value <string>(), user["name"].Value <string>());
            }

            foreach (var channel in data["channels"])
            {
                bool isArchived = channel["is_archived"].Value <bool>();
                bool isMember   = channel["is_member"].Value <bool>();

                if (isArchived || !isMember)
                {
                    continue;
                }

                state.AddHub(
                    channel["id"].Value <string>(),
                    channel["name"].Value <string>(),
                    HubType.Channel);
            }

            foreach (var group in data["groups"])
            {
                bool isArchived = group["is_archived"].Value <bool>();
                bool isMember   = group["members"].Values <string>().Contains(state.BotUserId);

                if (isArchived || !isMember)
                {
                    continue;
                }

                state.AddHub(
                    group["id"].Value <string>(),
                    group["name"].Value <string>(),
                    HubType.Group);
            }

            foreach (var im in data["ims"])
            {
                string userId = im["user"].Value <string>();

                state.AddHub(
                    im["id"].Value <string>(),
                    state.GetUser(userId)?.Username ?? userId,
                    HubType.DirectMessage
                    );
            }

            return(state);
        }