mandalorien / Sethi - Export Tchat OG

// ==UserScript==
// @namespace    https://openuserjs.org/users/mandalorien
// @name         Sethi - Export Tchat OG
// @author mandalorien
// @version      0.1.1
// @description  permet d'exporter proprement une conversation OG sur discord
// @copyright 2020, mandalorien (https://openuserjs.org/users/mandalorien)
// @license GPL-2.0-only
// @require      https://code.jquery.com/jquery-3.4.1.min.js
// @require      https://openuserjs.org/install/mandalorien/Sethi_-_Functions.user.js
// @include      https://*.ogame.gameforge.com/game/index.php?page=chat
// @updateURL https://openuserjs.org/meta/mandalorien/Sethi_-_Export_Tchat_OG.meta.js
// @downloadURL https://openuserjs.org/install/mandalorien/Sethi_-_Export_Tchat_OG.user.js
// @grant        GM_xmlhttpRequest
// @grant        GM_addStyle
// @run-at       document-end
// ==/UserScript==

// ==OpenUser JS==
// @author mandalorien
// ==OpenUser JS==

var _MODE_DEV = false;

$('.msg').click(function()
{
	setTimeout(function()
	{
        const LIMIT_CARACT = 1910; // 2500
		var _C = 1;
		var _A = '';
		var _M = '';

		//select Author
		$('.largeChat li .msg_head .msg_title').each(function (index) {
			_A += $(this).text().trim() + '@';
		});

		//select Message
		$('.largeChat li .msg_content').each(function (index2) {
		  _M += $(this).text().trim() + '@';
		});

        var _ST= 11;
		var _ListA   = _A.split('@');
		var _ListM   = _M.split('@');
		var _Forme   = '```Markdown';
            _Forme  += '\n# PARTIE '+ _C +' \n';
        var _Quotes  = '```Markdown';
			_Quotes += '\n# PARTIE '+ _C +' \n';

		//-------- FORMAT DISCORD
		for(var _I = 0; _I < _ListA.length; _I++)
		{
            _ST = _Forme.length;
			if(_ListM[_I] != '')
			{
				_ListM[_I] = _ListM[_I].replace(/[\n]/gi,"");
				_Forme += '[' + _ListA[_I] + '][' + _ListM[_I] + ']';
				_Forme += '\n';
			}

            if(_MODE_DEV){
                console.log('-----------------');
                console.log(_ST);
                console.log(_Quotes.length);
		    }
		    
            for(let _F = _ST;_F< _Forme.length;_F++){
                _Quotes += _Forme[_F];
                if(_F%LIMIT_CARACT == 0){
                    _C ++;
                    _Quotes +=' ...]\n';
                    _Quotes +='```';
                    _Quotes +='\n';
                    _Quotes +='```Markdown';
                    _Quotes +='\n# PARTIE '+ _C +' \n';
                    _Quotes +='['+ _ListA[_I] +'][...';
                }
            }
		}

        _Quotes += '```';

        if(_MODE_DEV){
            console.log(_Quotes);
	    }
	    
		var _HTML  = '';
			_HTML += '<center>';
            _HTML += '<small><i>Discussion copiée est formatée pour être collée sur Discord</i></small>';
			_HTML += '<textarea class="js_copy" rows="20" cols="50" readonly="false">';
			_HTML += _Quotes;
			_HTML += '</textarea>';
			_HTML += '</center>';

		$('#chatContent .content').append(_HTML);

		var _Button  = '';
			_Button += '<a id="pastchat" style="float:left;left:0px;" href="#" class="btn_blue fright">';
			_Button += 'Copier la discussion dans le presse-passier';
			_Button += '</a>';

		$(".send_new_msg" ).after(_Button);
	}, 1000);
});

$(document).on('click','#pastchat',function(){

    // Cible de l'élément qui doit être copié
    var fromElement = document.querySelector('.js_copy');
    navigator.clipboard.writeText(fromElement.value).then(function() {
        /* presse-papiers modifié avec succès */
        alert("coller le texte sur notepad ++ avant , pour envoyer en plusieurs morceaux la discussion .\n il y a une limite 2500 carctères sur Discord !!!!");
    }, function() {
        
        if(_MODE_DEV){
            console.log("Veuillez contacter le développeur de ce module");
	    }
    });
});

GM_addStyle(`
textarea.js_copy{
  visibility:hidden;
  display:none;
}
`);