Exemplo n.º 1
0
        public override void Load(bool startup)
        {
            OnPlayerConnectEvent.Register(ConnectHandler.HandleConnect, Priority.Critical);
            OnPlayerCommandEvent.Register(ChatHandler.HandleCommand, Priority.Critical);
            OnChatEvent.Register(ChatHandler.HandleOnChat, Priority.Critical);
            OnPlayerStartConnectingEvent.Register(ConnectingHandler.HandleConnecting, Priority.Critical);

            OnSentMapEvent.Register(MiscHandlers.HandleOnMapSent, Priority.Critical);
            OnPlayerMoveEvent.Register(MiscHandlers.HandlePlayerMove, Priority.Critical);
            OnPlayerClickEvent.Register(MiscHandlers.HandlePlayerClick, Priority.Critical);

            OnEcoTransactionEvent.Register(EcoHandlers.HandleEcoTransaction, Priority.Critical);
            OnModActionEvent.Register(ModActionHandler.HandleModAction, Priority.Critical);
            clearTask = Server.Background.QueueRepeat(IPThrottler.CleanupTask, null,
                                                      TimeSpan.FromMinutes(10));
        }
Exemplo n.º 2
0
        public override void Unload(bool shutdown)
        {
            OnPlayerConnectEvent.Unregister(ConnectHandler.HandleConnect);
            OnPlayerCommandEvent.Unregister(ChatHandler.HandleCommand);
            OnChatEvent.Unregister(ChatHandler.HandleOnChat);
            OnPlayerStartConnectingEvent.Unregister(ConnectingHandler.HandleConnecting);

            OnSentMapEvent.Unregister(MiscHandlers.HandleSentMap);
            OnPlayerMoveEvent.Unregister(MiscHandlers.HandlePlayerMove);
            OnPlayerClickEvent.Unregister(MiscHandlers.HandlePlayerClick);
            OnChangedZoneEvent.Unregister(MiscHandlers.HandleChangedZone);

            OnEcoTransactionEvent.Unregister(EcoHandlers.HandleEcoTransaction);
            OnModActionEvent.Unregister(ModActionHandler.HandleModAction);
            Server.Background.Cancel(clearTask);
        }
Exemplo n.º 3
0
        /// <summary> Sends a chat message from the given player (e.g. regular player chat or /me) </summary>
        /// <remarks> Chat messages will increase player's total messages sent in /info,
        /// and count towards triggering automute for chat spamming </remarks>
        /// <remarks> Only players not ignoring the given player will see this message. </remarks>
        public static void MessageChat(ChatScope scope, Player source, string msg, object arg,
                                       ChatMessageFilter filter, bool irc = false)
        {
            Player[]          players     = PlayerInfo.Online.Items;
            ChatMessageFilter scopeFilter = scopeFilters[(int)scope];
            bool counted = false;

            OnChatEvent.Call(scope, source, msg, arg, ref filter, irc);
            foreach (Player pl in players)
            {
                if (Ignoring(pl, source))
                {
                    continue;
                }
                // Always show message to self too (unless ignoring self)

                if (pl != source)
                {
                    if (!scopeFilter(pl, arg))
                    {
                        continue;
                    }
                    if (filter != null && !filter(pl, arg))
                    {
                        continue;
                    }

                    if (!counted)
                    {
                        source.TotalMessagesSent++; counted = true;
                    }
                }
                else
                {
                    // don't send PM back to self
                    if (scope == ChatScope.PM)
                    {
                        continue;
                    }
                }

                pl.Message(UnescapeMessage(pl, source, msg));
            }
            source.CheckForMessageSpam();
        }
Exemplo n.º 4
0
 private void Client_OnIncorrectLogin(object sender, OnIncorrectLoginArgs e)
 {
     OnChatEvent?.Invoke(new TwitchChatEvent(TwitchChatEventType.LogError,
                                             e.Exception.ToString()));
 }
Exemplo n.º 5
0
 private void Client_OnNoPermissionError(object sender, EventArgs e)
 {
     OnChatEvent?.Invoke(new TwitchChatEvent(TwitchChatEventType.LogError, "No Permission Error"));
 }
Exemplo n.º 6
0
 private void Client_OnError(object sender, TwitchLib.Communication.Events.OnErrorEventArgs e)
 {
     OnChatEvent?.Invoke(new TwitchChatEvent(TwitchChatEventType.LogError, e.Exception.ToString()));
 }
Exemplo n.º 7
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;
            }
        }
Exemplo n.º 8
0
 /// <summary>
 /// Signals a chat event to all listeners. (usually a UI)
 /// </summary>
 /// <param name="info">The chat event to pass along.</param>
 public void SignalChatEvent(VMChatEvent evt)
 {
     OnChatEvent?.Invoke(evt);
 }