Clear chat input - Bonk.io

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

You will need to install an extension such as Tampermonkey, Greasemonkey or Violentmonkey to install this script.

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

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

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

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

You will need to install a user script manager extension to install this script.

(I already have a user script manager, let me install it!)

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.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

You will need to install a user style manager extension to install this style.

(I already have a user style manager, let me install it!)

// ==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://greatest.deepsurf.us/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"]
		});
	}
})();