Clear chat input - Bonk.io

Clears the chat input after a delay when you return to the lobby or go into a game

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Greasemonkey lub Violentmonkey.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, wymagana jest instalacje jednego z następujących rozszerzeń: Tampermonkey, Violentmonkey.

Aby zainstalować ten skrypt, wymagana będzie instalacja rozszerzenia Tampermonkey lub Userscripts.

You will need to install an extension such as Tampermonkey to install this script.

Aby zainstalować ten skrypt, musisz zainstalować rozszerzenie menedżera skryptów użytkownika.

(Mam już menedżera skryptów użytkownika, pozwól mi to zainstalować!)

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

You will need to install an extension such as Stylus to install this style.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Będziesz musiał zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

Musisz zainstalować rozszerzenie menedżera stylów użytkownika, aby zainstalować ten styl.

(Mam już menedżera stylów użytkownika, pozwól mi to zainstalować!)

// ==UserScript==
// @name         Clear chat input - Bonk.io
// @version      1.0.4
// @description  Clears the chat input after a delay when you return to the lobby or go into a game
// @author       Excigma
// @namespace    https://greasyfork.org/users/416480
// @license      GPL-3.0
// @match        https://bonk.io/gameframe-release.html
// @run-at       document-end
// ==/UserScript==

// I have not thoroughly tested this to see if it works. Preliminary testing suggests it does.

// What this does:
// - Clears the chat inputs after a delay after the round ends so some characters don't stay
//   bonk.io does it, but sometimes leaves a few characters if you're typing whilst the round ends

// I need to use semicolons correc;tky;;;;;

(() => {
	// Where the actual game is shown
	const gamerenderer = document.getElementById("gamerenderer");

	// In-game chat input
	const ingamechatinputtext = document.getElementById("ingamechatinputtext");
	// Lobby chat input
	const newbonklobby_chat_input = document.getElementById("newbonklobby_chat_input");

	// If all elements are found, run the code. If they're not found it'll error
	// shouldn't ever be false unless the button's IDs are renamed
	if (gamerenderer) {
		new MutationObserver(mutationsList => {
			for (const mutation of mutationsList) {
				// The "gamerenderer" has been hidden (this is used to render the match and stuffs)
				// In short, this means we have left the game or returned to the lobby
				if (gamerenderer.style.visibility === "hidden") {
					// Reset the chat in game after a small delay (should be copied to lobby chat by bonk)
					// Will "fix" bonk not clearing the chat properly (hopefully)
					setTimeout(() => {
						// Check if it's still hidden, otherwise it will break with map cycler
						if (gamerenderer.style.visibility === "hidden") ingamechatinputtext.value = "";
					}, 100);
				} else if (gamerenderer.style.visibility === "inherit") {
					// Reset the lobby chat due to the game starting
					setTimeout(() => {
						if (gamerenderer.style.visibility === "inherit") newbonklobby_chat_input.value = "";
					}, 100);
				}
			}
		}).observe(gamerenderer, {
			attributeFilter: ["style"]
		});
	}
})();