Beispiel #1
0
        static void Main()
        {
            PrintStatus("Loading config..", ConsoleColor.Green);
            try
            {
                Config = JsonConvert.DeserializeObject <Config>(File.ReadAllText(Path.Combine(Environment.CurrentDirectory, "config.json")));
            }
            catch (JsonReaderException e)
            {
                SetError(e.Message);
            }
            catch (FileNotFoundException ex)
            {
                SetError(ex.Message);
            }

            if (string.IsNullOrWhiteSpace(Config.DisplayName))
            {
                SetError("No display name specified!");
            }

            if (string.IsNullOrWhiteSpace(Config.AuthToken))
            {
                SetError("No authentication token provided!");
            }

            PrintStatus("Setting up account..", ConsoleColor.Green);
            Account = new DliveAccount(Config.AuthToken);
            try
            {
                Account.Query.GetMyInfo();
            }
            catch (JsonSerializationException)
            {
                SetError("Invalid authentication token provided!");
            }
            catch (Exception e)
            {
                SetError(e.Message);
            }

            PublicUserData usr = PublicQuery.GetPublicInfoByDisplayName(Config.DisplayName);

            if (usr.Username == "invalid user")
            {
                SetError("Invalid display name provided!");
            }

            PrintStatus("Connecting to event stream..", ConsoleColor.Green);
            Subscription subscription = Subscription.SubscriptionByDisplayName(Config.DisplayName);

            subscription.OnChatEvent += OnChat;
            subscription.OnConnected += () => PrintStatus($"Connected to {Config.DisplayName}!", ConsoleColor.Green);
            subscription.OnError     += (err) => SetError(err);
            subscription.Connect();

            Console.WriteLine("Press enter to stop the program");
            Console.ReadLine();
        }
Beispiel #2
0
        private void BuildChatMessage(string channel, dynamic data)
        {
            Enum.TryParse(data[0].type.ToString().ToUpper(), out ChatEventType type);
            Enum.TryParse(data[0].roomRole.ToString().ToUpper(), out RoomRole roomRole);

            #if DEBUG
            Console.WriteLine(data[0].ToString());
            #endif

            switch (type)
            {
            case ChatEventType.MESSAGE:
                OnChatEvent?.Invoke(new ChatTextMessage(channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, bool.Parse(data[0].subscribing.ToString()), data[0].content.ToString(), long.Parse(data[0].subLength.ToString())));
                break;

            case ChatEventType.GIFT:
                Enum.TryParse(data[0].gift.ToString(), out GiftType giftType);
                OnChatEvent?.Invoke(new ChatGiftMessage(channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, bool.Parse(data[0].subscribing.ToString()), giftType, int.Parse(data[0].amount.ToString()), data[0].message.ToString()));
                break;

            case ChatEventType.SUBSCRIPTION:
                OnChatEvent?.Invoke(new ChatSubscriptionMessage(channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, bool.Parse(data[0].subscribing.ToString()), int.Parse(data[0].month.ToString())));
                break;

            case ChatEventType.HOST:
                OnChatEvent?.Invoke(new ChatHostMessage(channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, bool.Parse(data[0].subscribing.ToString()), int.Parse(data[0].viewer.ToString())));
                break;

            case ChatEventType.CHAT_MODE:
                Enum.TryParse(data[0].mode.ToString(), out ChatMode mode);
                OnChatEvent?.Invoke(new ChatModeChangeMessage(channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, bool.Parse(data[0].subscribing.ToString()), mode));
                break;

            case ChatEventType.BAN:
                Enum.TryParse(data[0].bannedByRoomRoleToString().ToUpper(), out RoomRole bannedByRoomRole);
                OnChatEvent?.Invoke(new ChatBanMessage(channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, Util.DliveUserObjectToPublicUserData(data[0].bannedBy), bannedByRoomRole));
                break;

            case ChatEventType.MOD:
                ModeratorStatusChange change = bool.Parse(data[0].add.ToString()) ? ModeratorStatusChange.PROMOTED : ModeratorStatusChange.DEMOTED;
                OnChatEvent?.Invoke(new ChatModStatusChangeMessage(channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, bool.Parse(data[0].subscribing.ToString()), change));
                break;

            case ChatEventType.EMOTE:
                OnChatEvent?.Invoke(new ChatEmoteMessage(channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, bool.Parse(data[0].subscribing.ToString()), data[0].emote.ToString()));
                break;

            case ChatEventType.TIMEOUT:
                Enum.TryParse(data[0].bannedByRoomRoleToString().ToUpper(), out RoomRole timedoutByRoomRole);
                OnChatEvent?.Invoke(new ChatTimeoutMessage(channel, data[0].id.ToString(), int.Parse(data[0].minute.ToString()), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, Util.DliveUserObjectToPublicUserData(data[0].bannedBy), timedoutByRoomRole));
                break;

            case ChatEventType.CLIP:
                OnChatEvent?.Invoke(new ChatClipMessage(channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(data[0].sender), roomRole, bool.Parse(data[0].subscribing.ToString()), new Uri($"https://dlive.tv/clip/{data[0].url.ToString()}")));
                break;

            case ChatEventType.GIFTSUB:
                if (!int.TryParse(data[0].count.ToString(), out int months))
                {
                    months = 1;
                }

                OnChatEvent?.Invoke(new ChatGiftSubscriptionMessage(channel, data[0].id.ToString(), months, Util.DliveUserObjectToPublicUserData(data[0].sender), PublicQuery.GetPublicInfoByDisplayName(data[0].receiver.ToString()), roomRole));
                break;

            default:
                dynamic user = data[0].sender;
                OnChatEvent?.Invoke(user != null ? new UserChatMessage(type, channel, data[0].id.ToString(), Util.DliveUserObjectToPublicUserData(user), roomRole, bool.Parse(data[0].subscribing.ToString())) : new ChatMessage(type, channel, data[0].id.ToString()));
                break;
            }
        }
Beispiel #3
0
 public static string DliveDisplayNameToUsername(string displayName)
 {
     return(PublicQuery.GetPublicInfoByDisplayName(displayName).Username);
 }