getChatMessageHistory(groupId, chatId, options, callback) {
		if (typeof options === 'function') {
			callback = options;
			options = {};
		}

		return StdLib.Promises.timeoutCallbackPromise(10000, null, callback, (resolve, reject) => {
			let max_count = options.maxCount || 100;
			let last_time = options.lastTime ? convertDateToUnix(options.lastTime) : undefined;
			let last_ordinal = options.lastOrdinal;
			let start_time = options.startTime ? convertDateToUnix(options.startTime) : undefined;
			let start_ordinal = options.startOrdinal;

			this.user._sendUnified('ChatRoom.GetMessageHistory#1', {
				chat_group_id: groupId,
				chat_id: chatId,
				last_time,
				last_ordinal,
				start_time,
				start_ordinal,
				max_count
			}, (body, hdr) => {
				let err = Helpers.eresultError(hdr.proto);
				if (err) {
					return reject(err);
				}

				body.messages = body.messages.map((msg) => {
					msg.sender = SteamID.fromIndividualAccountID(msg.sender);
					msg.server_timestamp = new Date(msg.server_timestamp * 1000);
					msg.ordinal = msg.ordinal || 0;
					msg.message_bbcode_parsed = parseBbCode(msg.message);
					msg.deleted = !!msg.deleted;
					if (msg.server_message) {
						msg.server_message.steamid_param = msg.server_message.accountid_param ? SteamID.fromIndividualAccountID(msg.server_message.accountid_param) : null;
						delete msg.server_message.accountid_param;
					}
					return msg;
				});

				body.more_available = !!body.more_available;
				resolve(body);
			});
		});
	}
Get message history for a chat (channel).
@param {int|string} groupId
@param {int|string} chatId
@param {{[maxCount], [lastTime], [lastOrdinal], [startTime], [startOrdinal]}} [options]
@param {function} [callback]
@returns {Promise<{messages: {sender: SteamID, server_timestamp: Date, ordinal: number, message: string, server_message?: {message: EChatRoomServerMessage, string_param?: string, steamid_param?: SteamID}, deleted: boolean}[], more_available: boolean}>}