Esempio n. 1
0
        private void OnChatInvite(SteamFriends.ChatInviteCallback callback)
        {
            // TODO: Is this needed?
            if (callback.InvitedID != kraxbot.SteamID)
            {
                return;
            }

            if (string.IsNullOrEmpty(callback.ChatRoomName))
            {
                kraxbot.SendChatMessage(callback.FriendChatID, "Sorry, I can't (currently) join multi-user chats");
                return;
            }

            var userID   = callback.FriendChatID;
            var userName = kraxbot.GetFriendPersonaName(callback.FriendChatID);

            if (userID != kraxbot.KraxID && (callback.ChatRoomID == lastChatroom || userID == lastInviter))
            {
                // Set as joining the chatroom
                joiningChatroom = callback.ChatRoomID;

                Kraxbot.Log($"Got invite to {callback.ChatRoomName} from {userName}");
                kraxbot.JoinChatRoom(callback.ChatRoomID);

                lastInviter = userID;

                RegisterUserEvent(userID, UserEventType.Invite);
                RegisterGroupEvent(callback.ChatRoomID, GroupEventType.Invite);

                // Update names
                var settings = kraxbot.GetChatRoomSettings(callback.ChatRoomID);
                settings.InvitedID = callback.FriendChatID;
                if (kraxbot.TryGetFriendDetails(userID, out var friend))
                {
                    settings.InvitedName = friend.Name;
                }
            }
            else
            {
                Kraxbot.Log($"Got invited to recent chat from {userName}, declined");
                kraxbot.SendChatMessage(userID, "Sorry, I can't enter this chat. This is either because I recently left it or because you are spamming invites to chats.");
            }
        }