const {spawn} = require('child_process');

module.exports = function (user) {

	function update() {

		const list = spawn('./etwolf-serverlist');
		let buffer = '';

		list.stdout.on('data', data => {
			buffer += data;
		});

		list.on('close', code => {

			if (code !== 0) {
				return;
			}

			let count = 0;

			buffer.split("\n\n").forEach(info => {

				const cVars = info.matchAll(/^([^:]+): (.+)$/mg);

				for (let cVar of cVars) {

					if (cVar[1] === 'protocol' && cVar[2] === '84') {

						const pc = info.match(/^\d+ [1-9]\d{0,2} "[^"]+"$/mg);

						if (pc !== null) {
							count += pc.length;
						}

						break;

					}

				}

			});

			if (count > 0) {

				const formatted = String(count).replace(/(?<!\..*)(\d)(?=(?:\d{3})+(?:\.|$))/g, '$1,');

				user.setActivity(`${formatted} ET players`, { type: 'WATCHING' }).catch(error => {
					console.warn(error);
				});

			} else {

				user.setActivity(null).catch(error => {
					console.warn(error);
				});

			}

		});

	}

	setInterval(update, 60 * 15 * 1000);
	update();

};