diff --git a/CMakeLists.txt b/CMakeLists.txt
index d5faa4a94c319432eaa1952a67401bfa01ec72ef..c2496f2fb205856dfbfd66426800c445b0d1873d 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -333,7 +333,7 @@ if(USE_BUNDLED_MTXCLIENT)
 	FetchContent_Declare(
 		MatrixClient
 		GIT_REPOSITORY https://github.com/Nheko-Reborn/mtxclient.git
-		GIT_TAG        1fd59de2a37e6b547db8e5b52114f3f10171ef2f
+		GIT_TAG        03b5008a05f895e91e3968de7b68db50f6c41b2a
 		)
 	FetchContent_MakeAvailable(MatrixClient)
 else()
diff --git a/resources/langs/nheko_de.ts b/resources/langs/nheko_de.ts
index e4271a6e492d6e93246e840e30c4f34354928dea..32526797e802eb51bc2ac444d2e95732fb194a45 100644
--- a/resources/langs/nheko_de.ts
+++ b/resources/langs/nheko_de.ts
@@ -4,7 +4,53 @@
 <context>
     <name>ChatPage</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+328"/>
+        <location filename="../../src/ChatPage.cpp" line="+211"/>
+        <source>Failed to invite user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+84"/>
+        <source>Invited user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Failed to invite %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Failed to kick %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Kicked user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Failed to ban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Banned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Failed to unban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unbanned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+50"/>
         <source>Failed to upload media. Please try again.</source>
         <translation>Medienupload fehlgeschlagen. Bitte versuche es erneut.</translation>
     </message>
@@ -25,17 +71,37 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+155"/>
+        <location line="+154"/>
         <source>Please try to login again: %1</source>
         <translation>Bitte melde dich erneut an: %1</translation>
     </message>
     <message>
-        <location line="-47"/>
+        <location line="-77"/>
+        <source>Failed to join room: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>You joined the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Failed to remove invite: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+19"/>
         <source>Room creation failed: %1</source>
         <translation>Raum konnte nicht erstellt werden: %1</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+5"/>
+        <source>Room %1 created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
         <source>Failed to leave room: %1</source>
         <translation>Konnte den Raum nicht verlassen: %1</translation>
     </message>
@@ -385,7 +451,7 @@
         <translation>Emoji</translation>
     </message>
     <message>
-        <location line="+73"/>
+        <location line="+81"/>
         <source>Select a file</source>
         <translation>Datei auswählen</translation>
     </message>
@@ -403,7 +469,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+698"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+716"/>
         <source>-- Encrypted Event (No keys found for decryption) --</source>
         <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment>
         <translation>-- verschlüsselter Event (keine Schlüssel zur Entschlüsselung gefunden) --</translation>
@@ -646,42 +712,47 @@
 <context>
     <name>UserSettingsPage</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+172"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+188"/>
         <source>Minimize to tray</source>
         <translation>Ins Benachrichtigungsfeld minimieren</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Start in tray</source>
         <translation>Im Benachrichtigungsfeld starten</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+5"/>
         <source>Group&apos;s sidebar</source>
         <translation>Gruppen-Seitenleiste</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Circular Avatars</source>
         <translation>Runde Profilbilder</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Typing notifications</source>
         <translation>Schreibbenachrichtigungen</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Read receipts</source>
         <translation>Lesebestätigungen</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
+        <source>Send messages as markdown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
         <source>Desktop notifications</source>
         <translation>Desktopbenachrichtigungen</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+4"/>
         <source>Scale factor</source>
         <translation>Skalierungsfaktor</translation>
     </message>
@@ -741,7 +812,7 @@
         <translation>ALLGEMEINES</translation>
     </message>
     <message>
-        <location line="+161"/>
+        <location line="+168"/>
         <source>Open Sessions File</source>
         <translation>Öffne Sessions Datei</translation>
     </message>
diff --git a/resources/langs/nheko_el.ts b/resources/langs/nheko_el.ts
index 982a14ac0142117cbda6508cba20768a0ee11e66..4344c5680ebf03c3ec132f4416327a4db6b7cb7b 100644
--- a/resources/langs/nheko_el.ts
+++ b/resources/langs/nheko_el.ts
@@ -4,7 +4,53 @@
 <context>
     <name>ChatPage</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+328"/>
+        <location filename="../../src/ChatPage.cpp" line="+211"/>
+        <source>Failed to invite user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+84"/>
+        <source>Invited user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Failed to invite %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Failed to kick %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Kicked user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Failed to ban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Banned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Failed to unban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unbanned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+50"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -25,17 +71,37 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+155"/>
+        <location line="+154"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-47"/>
+        <location line="-77"/>
+        <source>Failed to join room: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>You joined the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Failed to remove invite: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+19"/>
         <source>Room creation failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+5"/>
+        <source>Room %1 created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
         <source>Failed to leave room: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -385,7 +451,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+73"/>
+        <location line="+81"/>
         <source>Select a file</source>
         <translation>Διάλεξε ένα αρχείο</translation>
     </message>
@@ -403,7 +469,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+698"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+716"/>
         <source>-- Encrypted Event (No keys found for decryption) --</source>
         <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment>
         <translation type="unfinished"></translation>
@@ -646,42 +712,47 @@
 <context>
     <name>UserSettingsPage</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+172"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+188"/>
         <source>Minimize to tray</source>
         <translation>Ελαχιστοποίηση</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Start in tray</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+5"/>
         <source>Group&apos;s sidebar</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Circular Avatars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Typing notifications</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Read receipts</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
+        <source>Send messages as markdown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
         <source>Desktop notifications</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+4"/>
         <source>Scale factor</source>
         <translation type="unfinished"></translation>
     </message>
@@ -741,7 +812,7 @@
         <translation>ΓΕΝΙΚΑ</translation>
     </message>
     <message>
-        <location line="+161"/>
+        <location line="+168"/>
         <source>Open Sessions File</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/resources/langs/nheko_en.ts b/resources/langs/nheko_en.ts
index 60b1fe3d449d2ae2524686db8d860c502257585e..fee87ffb16c593f46ef0804ed39d01bf5c9d8c89 100644
--- a/resources/langs/nheko_en.ts
+++ b/resources/langs/nheko_en.ts
@@ -4,7 +4,53 @@
 <context>
     <name>ChatPage</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+328"/>
+        <location filename="../../src/ChatPage.cpp" line="+211"/>
+        <source>Failed to invite user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+84"/>
+        <source>Invited user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Failed to invite %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Failed to kick %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Kicked user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Failed to ban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Banned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Failed to unban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unbanned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+50"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -25,17 +71,37 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+155"/>
+        <location line="+154"/>
         <source>Please try to login again: %1</source>
         <translation>Please try to login again: %1</translation>
     </message>
     <message>
-        <location line="-47"/>
+        <location line="-77"/>
+        <source>Failed to join room: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>You joined the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Failed to remove invite: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+19"/>
         <source>Room creation failed: %1</source>
         <translation>Room creation failed: %1</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+5"/>
+        <source>Room %1 created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
         <source>Failed to leave room: %1</source>
         <translation>Failed to leave room: %1</translation>
     </message>
@@ -385,7 +451,7 @@
         <translation>Emoji</translation>
     </message>
     <message>
-        <location line="+73"/>
+        <location line="+81"/>
         <source>Select a file</source>
         <translation>Select a file</translation>
     </message>
@@ -403,7 +469,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+698"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+716"/>
         <source>-- Encrypted Event (No keys found for decryption) --</source>
         <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment>
         <translation type="unfinished">-- Encrypted Event (No keys found for decryption) --</translation>
@@ -646,42 +712,47 @@
 <context>
     <name>UserSettingsPage</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+172"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+188"/>
         <source>Minimize to tray</source>
         <translation>Minimize to tray</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Start in tray</source>
         <translation>Start in tray</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+5"/>
         <source>Group&apos;s sidebar</source>
         <translation>Group&apos;s sidebar</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Circular Avatars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Typing notifications</source>
         <translation>Typing notifications</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Read receipts</source>
         <translation>Read receipts</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
+        <source>Send messages as markdown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
         <source>Desktop notifications</source>
         <translation>Desktop notifications</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+4"/>
         <source>Scale factor</source>
         <translation>Scale factor</translation>
     </message>
@@ -741,7 +812,7 @@
         <translation>GENERAL</translation>
     </message>
     <message>
-        <location line="+161"/>
+        <location line="+168"/>
         <source>Open Sessions File</source>
         <translation>Open Sessions File</translation>
     </message>
diff --git a/resources/langs/nheko_fi.ts b/resources/langs/nheko_fi.ts
index b4b184c9ff1465f369e0077c7b4a5678a66c8289..f6e2756cc37f1b2ae7b517e4bcb07a026baf3357 100644
--- a/resources/langs/nheko_fi.ts
+++ b/resources/langs/nheko_fi.ts
@@ -4,7 +4,53 @@
 <context>
     <name>ChatPage</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+328"/>
+        <location filename="../../src/ChatPage.cpp" line="+211"/>
+        <source>Failed to invite user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+84"/>
+        <source>Invited user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Failed to invite %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Failed to kick %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Kicked user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Failed to ban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Banned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Failed to unban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unbanned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+50"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -25,17 +71,37 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+155"/>
+        <location line="+154"/>
         <source>Please try to login again: %1</source>
         <translation>Ole hyvä ja yritä kirjautua sisään uudelleen: %1</translation>
     </message>
     <message>
-        <location line="-47"/>
+        <location line="-77"/>
+        <source>Failed to join room: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>You joined the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Failed to remove invite: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+19"/>
         <source>Room creation failed: %1</source>
         <translation>Huoneen luominen epäonnistui: %1</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+5"/>
+        <source>Room %1 created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
         <source>Failed to leave room: %1</source>
         <translation>Huoneesta poistuminen epäonnistui: %1</translation>
     </message>
@@ -385,7 +451,7 @@
         <translation>Emoji</translation>
     </message>
     <message>
-        <location line="+73"/>
+        <location line="+81"/>
         <source>Select a file</source>
         <translation>Valitse tiedosto</translation>
     </message>
@@ -403,7 +469,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+698"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+716"/>
         <source>-- Encrypted Event (No keys found for decryption) --</source>
         <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment>
         <translation type="unfinished">-- Salattu viesti (salauksen purkuavaimia ei löydetty) --</translation>
@@ -646,42 +712,47 @@
 <context>
     <name>UserSettingsPage</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+172"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+188"/>
         <source>Minimize to tray</source>
         <translation>Pienennä ilmoitusalueelle</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Start in tray</source>
         <translation>Aloita ilmoitusalueella</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+5"/>
         <source>Group&apos;s sidebar</source>
         <translation>Ryhmäsivupalkki</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Circular Avatars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Typing notifications</source>
         <translation>Kirjoitusilmoitukset</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Read receipts</source>
         <translation>Lukukuittaukset</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
+        <source>Send messages as markdown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
         <source>Desktop notifications</source>
         <translation>Työpöytäilmoitukset</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+4"/>
         <source>Scale factor</source>
         <translation>Mittakerroin</translation>
     </message>
@@ -741,7 +812,7 @@
         <translation>YLEISET ASETUKSET</translation>
     </message>
     <message>
-        <location line="+161"/>
+        <location line="+168"/>
         <source>Open Sessions File</source>
         <translation>Avaa Istuntoavaintiedosto</translation>
     </message>
diff --git a/resources/langs/nheko_fr.ts b/resources/langs/nheko_fr.ts
index c713dcb186cf33a19643235cb097f20f5fb0ffeb..89dd8cdde2f59b29c158307f82b9be211121a780 100644
--- a/resources/langs/nheko_fr.ts
+++ b/resources/langs/nheko_fr.ts
@@ -4,7 +4,53 @@
 <context>
     <name>ChatPage</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+328"/>
+        <location filename="../../src/ChatPage.cpp" line="+211"/>
+        <source>Failed to invite user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+84"/>
+        <source>Invited user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Failed to invite %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Failed to kick %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Kicked user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Failed to ban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Banned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Failed to unban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unbanned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+50"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -25,17 +71,37 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+155"/>
+        <location line="+154"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-47"/>
+        <location line="-77"/>
+        <source>Failed to join room: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>You joined the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Failed to remove invite: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+19"/>
         <source>Room creation failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+5"/>
+        <source>Room %1 created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
         <source>Failed to leave room: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -386,7 +452,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+73"/>
+        <location line="+81"/>
         <source>Select a file</source>
         <translation>Sélectionnez un fichier</translation>
     </message>
@@ -404,7 +470,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+698"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+716"/>
         <source>-- Encrypted Event (No keys found for decryption) --</source>
         <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment>
         <translation type="unfinished"></translation>
@@ -647,42 +713,47 @@
 <context>
     <name>UserSettingsPage</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+172"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+188"/>
         <source>Minimize to tray</source>
         <translation>Réduire à la barre des tâches</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Start in tray</source>
         <translation>Démarrer dans la barre des tâches</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+5"/>
         <source>Group&apos;s sidebar</source>
         <translation>Barre latérale des groupes</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Circular Avatars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Typing notifications</source>
         <translation>Notifications d&apos;écriture</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Read receipts</source>
         <translation>Accusés de lecture</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
+        <source>Send messages as markdown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
         <source>Desktop notifications</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+4"/>
         <source>Scale factor</source>
         <translation type="unfinished"></translation>
     </message>
@@ -742,7 +813,7 @@
         <translation>GÉNÉRAL</translation>
     </message>
     <message>
-        <location line="+161"/>
+        <location line="+168"/>
         <source>Open Sessions File</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/resources/langs/nheko_nl.ts b/resources/langs/nheko_nl.ts
index 82b0f8815f3d7359cca8b3273db859e29e92d3b6..2aa5de746a27710079d9c5414dfdb33a104fbf3f 100644
--- a/resources/langs/nheko_nl.ts
+++ b/resources/langs/nheko_nl.ts
@@ -4,7 +4,53 @@
 <context>
     <name>ChatPage</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+328"/>
+        <location filename="../../src/ChatPage.cpp" line="+211"/>
+        <source>Failed to invite user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+84"/>
+        <source>Invited user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Failed to invite %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Failed to kick %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Kicked user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Failed to ban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Banned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Failed to unban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unbanned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+50"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -25,17 +71,37 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+155"/>
+        <location line="+154"/>
         <source>Please try to login again: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="-47"/>
+        <location line="-77"/>
+        <source>Failed to join room: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>You joined the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Failed to remove invite: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+19"/>
         <source>Room creation failed: %1</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+5"/>
+        <source>Room %1 created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
         <source>Failed to leave room: %1</source>
         <translation type="unfinished"></translation>
     </message>
@@ -385,7 +451,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+73"/>
+        <location line="+81"/>
         <source>Select a file</source>
         <translation>Kies een bestand</translation>
     </message>
@@ -403,7 +469,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+698"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+716"/>
         <source>-- Encrypted Event (No keys found for decryption) --</source>
         <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment>
         <translation type="unfinished"></translation>
@@ -646,42 +712,47 @@
 <context>
     <name>UserSettingsPage</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+172"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+188"/>
         <source>Minimize to tray</source>
         <translation>Minimaliseren naar systeemvak</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Start in tray</source>
         <translation>Geminimaliseerd opstarten</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+5"/>
         <source>Group&apos;s sidebar</source>
         <translation>Zijbalk van groep</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Circular Avatars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Typing notifications</source>
         <translation>Meldingen bij typen van berichten</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Read receipts</source>
         <translation>Leesbevestigingen</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
+        <source>Send messages as markdown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
         <source>Desktop notifications</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+4"/>
         <source>Scale factor</source>
         <translation type="unfinished"></translation>
     </message>
@@ -741,7 +812,7 @@
         <translation>ALGEMEEN</translation>
     </message>
     <message>
-        <location line="+161"/>
+        <location line="+168"/>
         <source>Open Sessions File</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/resources/langs/nheko_pl.ts b/resources/langs/nheko_pl.ts
index 6fb2133b2491ead8ba3d4ddc8571aa674c1e42e8..88dfe2b94f4a7f3ca3a6009805130b3462cd6719 100644
--- a/resources/langs/nheko_pl.ts
+++ b/resources/langs/nheko_pl.ts
@@ -4,7 +4,53 @@
 <context>
     <name>ChatPage</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+328"/>
+        <location filename="../../src/ChatPage.cpp" line="+211"/>
+        <source>Failed to invite user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+84"/>
+        <source>Invited user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Failed to invite %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Failed to kick %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Kicked user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Failed to ban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Banned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Failed to unban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unbanned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+50"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -25,17 +71,37 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+155"/>
+        <location line="+154"/>
         <source>Please try to login again: %1</source>
         <translation>Spróbuj zalogować się ponownie: %1</translation>
     </message>
     <message>
-        <location line="-47"/>
+        <location line="-77"/>
+        <source>Failed to join room: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>You joined the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Failed to remove invite: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+19"/>
         <source>Room creation failed: %1</source>
         <translation>Tworzenie pokoju nie powiodło się: %1</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+5"/>
+        <source>Room %1 created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
         <source>Failed to leave room: %1</source>
         <translation>Nie udało się opuścić pokoju: %1</translation>
     </message>
@@ -385,7 +451,7 @@
         <translation>Emoji</translation>
     </message>
     <message>
-        <location line="+73"/>
+        <location line="+81"/>
         <source>Select a file</source>
         <translation>Wybierz plik</translation>
     </message>
@@ -403,7 +469,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+698"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+716"/>
         <source>-- Encrypted Event (No keys found for decryption) --</source>
         <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment>
         <translation type="unfinished"></translation>
@@ -647,42 +713,47 @@
 <context>
     <name>UserSettingsPage</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+172"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+188"/>
         <source>Minimize to tray</source>
         <translation>Zminimalizuj do paska zadań</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Start in tray</source>
         <translation>Rozpocznij na pasku zadań</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+5"/>
         <source>Group&apos;s sidebar</source>
         <translation>Pasek boczny grupy</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Circular Avatars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Typing notifications</source>
         <translation>Powiadomienia o pisaniu</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Read receipts</source>
         <translation>Potwierdzenia przeczytania</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
+        <source>Send messages as markdown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
         <source>Desktop notifications</source>
         <translation>Powiadomienia na pulpicie</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+4"/>
         <source>Scale factor</source>
         <translation type="unfinished"></translation>
     </message>
@@ -742,7 +813,7 @@
         <translation>OGÓLNE</translation>
     </message>
     <message>
-        <location line="+161"/>
+        <location line="+168"/>
         <source>Open Sessions File</source>
         <translation type="unfinished"></translation>
     </message>
diff --git a/resources/langs/nheko_ru.ts b/resources/langs/nheko_ru.ts
index 1b84074f6c9aa6687db23ada8f3916d3a41650c4..07e169f789db656b0eaa3ea08c72d1b078dafeec 100644
--- a/resources/langs/nheko_ru.ts
+++ b/resources/langs/nheko_ru.ts
@@ -4,7 +4,53 @@
 <context>
     <name>ChatPage</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+328"/>
+        <location filename="../../src/ChatPage.cpp" line="+211"/>
+        <source>Failed to invite user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+84"/>
+        <source>Invited user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Failed to invite %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Failed to kick %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Kicked user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Failed to ban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Banned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Failed to unban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unbanned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+50"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -25,17 +71,37 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+155"/>
+        <location line="+154"/>
         <source>Please try to login again: %1</source>
         <translation>Повторите попытку входа: %1</translation>
     </message>
     <message>
-        <location line="-47"/>
+        <location line="-77"/>
+        <source>Failed to join room: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>You joined the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Failed to remove invite: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+19"/>
         <source>Room creation failed: %1</source>
         <translation>Не удалось создать комнату: %1</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+5"/>
+        <source>Room %1 created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
         <source>Failed to leave room: %1</source>
         <translation>Не удалось покинуть комнату: %1</translation>
     </message>
@@ -385,7 +451,7 @@
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+73"/>
+        <location line="+81"/>
         <source>Select a file</source>
         <translation>Выберите файл</translation>
     </message>
@@ -403,7 +469,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+698"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+716"/>
         <source>-- Encrypted Event (No keys found for decryption) --</source>
         <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment>
         <translation type="unfinished"></translation>
@@ -647,42 +713,47 @@
 <context>
     <name>UserSettingsPage</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+172"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+188"/>
         <source>Minimize to tray</source>
         <translation>Сворачивать в системную панель</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Start in tray</source>
         <translation>Запускать в системной панели</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+5"/>
         <source>Group&apos;s sidebar</source>
         <translation>Боковая панель групп</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Circular Avatars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Typing notifications</source>
         <translation>Сообщать о наборе сообщения</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Read receipts</source>
         <translation>Подтверждать прочтение</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
+        <source>Send messages as markdown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
         <source>Desktop notifications</source>
         <translation>Уведомления на рабочем столе</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+4"/>
         <source>Scale factor</source>
         <translation>Масштаб</translation>
     </message>
@@ -742,7 +813,7 @@
         <translation>ГЛАВНОЕ</translation>
     </message>
     <message>
-        <location line="+161"/>
+        <location line="+168"/>
         <source>Open Sessions File</source>
         <translation>Открыть файл сеансов</translation>
     </message>
diff --git a/resources/langs/nheko_zh_CN.ts b/resources/langs/nheko_zh_CN.ts
index f8b19434493185ebd2524e040c4824cbd9544176..c7e42fbabdcc34552663285f6e993b7264a8fa6f 100644
--- a/resources/langs/nheko_zh_CN.ts
+++ b/resources/langs/nheko_zh_CN.ts
@@ -4,7 +4,53 @@
 <context>
     <name>ChatPage</name>
     <message>
-        <location filename="../../src/ChatPage.cpp" line="+328"/>
+        <location filename="../../src/ChatPage.cpp" line="+211"/>
+        <source>Failed to invite user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+4"/>
+        <location line="+84"/>
+        <source>Invited user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="-6"/>
+        <source>Failed to invite %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+20"/>
+        <source>Failed to kick %1 to %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Kicked user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+14"/>
+        <source>Failed to ban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Banned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+16"/>
+        <source>Failed to unban %1 in %2: %3</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>Unbanned user: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+50"/>
         <source>Failed to upload media. Please try again.</source>
         <translation type="unfinished"></translation>
     </message>
@@ -25,17 +71,37 @@
     </message>
     <message>
         <location line="+51"/>
-        <location line="+155"/>
+        <location line="+154"/>
         <source>Please try to login again: %1</source>
         <translation>请尝试再次登录:%1</translation>
     </message>
     <message>
-        <location line="-47"/>
+        <location line="-77"/>
+        <source>Failed to join room: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+5"/>
+        <source>You joined the room</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+6"/>
+        <source>Failed to remove invite: %1</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+19"/>
         <source>Room creation failed: %1</source>
         <translation>创建聊天室失败:%1</translation>
     </message>
     <message>
-        <location line="+16"/>
+        <location line="+5"/>
+        <source>Room %1 created</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+11"/>
         <source>Failed to leave room: %1</source>
         <translation>离开聊天室失败:%1</translation>
     </message>
@@ -385,7 +451,7 @@
         <translation></translation>
     </message>
     <message>
-        <location line="+73"/>
+        <location line="+81"/>
         <source>Select a file</source>
         <translation>选择一个文件</translation>
     </message>
@@ -403,7 +469,7 @@
 <context>
     <name>TimelineModel</name>
     <message>
-        <location filename="../../src/timeline/TimelineModel.cpp" line="+698"/>
+        <location filename="../../src/timeline/TimelineModel.cpp" line="+716"/>
         <source>-- Encrypted Event (No keys found for decryption) --</source>
         <comment>Placeholder, when the message was not decrypted yet or can&apos;t be decrypted</comment>
         <translation type="unfinished"></translation>
@@ -645,42 +711,47 @@
 <context>
     <name>UserSettingsPage</name>
     <message>
-        <location filename="../../src/UserSettingsPage.cpp" line="+172"/>
+        <location filename="../../src/UserSettingsPage.cpp" line="+188"/>
         <source>Minimize to tray</source>
         <translation>最小化至托盘</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Start in tray</source>
         <translation>在托盘启动</translation>
     </message>
     <message>
-        <location line="+11"/>
+        <location line="+5"/>
         <source>Group&apos;s sidebar</source>
         <translation>群组侧边栏</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Circular Avatars</source>
         <translation type="unfinished"></translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Typing notifications</source>
         <translation>打字通知</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
         <source>Read receipts</source>
         <translation>阅读回执</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+3"/>
+        <source>Send messages as markdown</source>
+        <translation type="unfinished"></translation>
+    </message>
+    <message>
+        <location line="+3"/>
         <source>Desktop notifications</source>
         <translation>桌面通知</translation>
     </message>
     <message>
-        <location line="+9"/>
+        <location line="+4"/>
         <source>Scale factor</source>
         <translation type="unfinished"></translation>
     </message>
@@ -740,7 +811,7 @@
         <translation>通用</translation>
     </message>
     <message>
-        <location line="+161"/>
+        <location line="+168"/>
         <source>Open Sessions File</source>
         <translation>打开会话文件</translation>
     </message>
diff --git a/src/ChatPage.cpp b/src/ChatPage.cpp
index c7739281e986f19e21384267c8bf1b9ea82e5ce3..a337baac62448aa1b589bea4824f346388557b3d 100644
--- a/src/ChatPage.cpp
+++ b/src/ChatPage.cpp
@@ -208,12 +208,11 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent)
                                                mtx::http::RequestErr err) {
                                           if (err) {
                                                   emit showNotification(
-                                                    QString("Failed to invite user: %1").arg(user));
+                                                    tr("Failed to invite user: %1").arg(user));
                                                   return;
                                           }
 
-                                          emit showNotification(
-                                            QString("Invited user: %1").arg(user));
+                                          emit showNotification(tr("Invited user: %1").arg(user));
                                   });
                         });
                 }
@@ -280,6 +279,89 @@ ChatPage::ChatPage(QSharedPointer<UserSettings> userSettings, QWidget *parent)
 
         connect(text_input_, &TextInputWidget::sendJoinRoomRequest, this, &ChatPage::joinRoom);
 
+        // invites and bans via quick command
+        connect(text_input_,
+                &TextInputWidget::sendInviteRoomRequest,
+                this,
+                [this](QString userid, QString reason) {
+                        http::client()->invite_user(
+                          current_room_.toStdString(),
+                          userid.toStdString(),
+                          [this, userid, room = current_room_](const mtx::responses::Empty &,
+                                                               mtx::http::RequestErr err) {
+                                  if (err) {
+                                          emit showNotification(tr("Failed to invite %1 to %2: %3")
+                                                                  .arg(userid)
+                                                                  .arg(room)
+                                                                  .arg(QString::fromStdString(
+                                                                    err->matrix_error.error)));
+                                  } else
+                                          emit showNotification(tr("Invited user: %1").arg(userid));
+                          },
+                          reason.trimmed().toStdString());
+                });
+        connect(text_input_,
+                &TextInputWidget::sendKickRoomRequest,
+                this,
+                [this](QString userid, QString reason) {
+                        http::client()->kick_user(
+                          current_room_.toStdString(),
+                          userid.toStdString(),
+                          [this, userid, room = current_room_](const mtx::responses::Empty &,
+                                                               mtx::http::RequestErr err) {
+                                  if (err) {
+                                          emit showNotification(tr("Failed to kick %1 to %2: %3")
+                                                                  .arg(userid)
+                                                                  .arg(room)
+                                                                  .arg(QString::fromStdString(
+                                                                    err->matrix_error.error)));
+                                  } else
+                                          emit showNotification(tr("Kicked user: %1").arg(userid));
+                          },
+                          reason.trimmed().toStdString());
+                });
+        connect(text_input_,
+                &TextInputWidget::sendBanRoomRequest,
+                this,
+                [this](QString userid, QString reason) {
+                        http::client()->ban_user(
+                          current_room_.toStdString(),
+                          userid.toStdString(),
+                          [this, userid, room = current_room_](const mtx::responses::Empty &,
+                                                               mtx::http::RequestErr err) {
+                                  if (err) {
+                                          emit showNotification(tr("Failed to ban %1 in %2: %3")
+                                                                  .arg(userid)
+                                                                  .arg(room)
+                                                                  .arg(QString::fromStdString(
+                                                                    err->matrix_error.error)));
+                                  } else
+                                          emit showNotification(tr("Banned user: %1").arg(userid));
+                          },
+                          reason.trimmed().toStdString());
+                });
+        connect(
+          text_input_,
+          &TextInputWidget::sendUnbanRoomRequest,
+          this,
+          [this](QString userid, QString reason) {
+                  http::client()->unban_user(
+                    current_room_.toStdString(),
+                    userid.toStdString(),
+                    [this, userid, room = current_room_](const mtx::responses::Empty &,
+                                                         mtx::http::RequestErr err) {
+                            if (err) {
+                                    emit showNotification(
+                                      tr("Failed to unban %1 in %2: %3")
+                                        .arg(userid)
+                                        .arg(room)
+                                        .arg(QString::fromStdString(err->matrix_error.error)));
+                            } else
+                                    emit showNotification(tr("Unbanned user: %1").arg(userid));
+                    },
+                    reason.trimmed().toStdString());
+          });
+
         connect(
           text_input_,
           &TextInputWidget::uploadMedia,
@@ -998,19 +1080,18 @@ ChatPage::joinRoom(const QString &room)
           room_id, [this, room_id](const nlohmann::json &, mtx::http::RequestErr err) {
                   if (err) {
                           emit showNotification(
-                            QString("Failed to join room: %1")
+                            tr("Failed to join room: %1")
                               .arg(QString::fromStdString(err->matrix_error.error)));
                           return;
                   }
 
-                  emit showNotification("You joined the room");
+                  emit tr("You joined the room");
 
                   // We remove any invites with the same room_id.
                   try {
                           cache::removeInvite(room_id);
                   } catch (const lmdb::error &e) {
-                          emit showNotification(
-                            QString("Failed to remove invite: %1").arg(e.what()));
+                          emit showNotification(tr("Failed to remove invite: %1").arg(e.what()));
                   }
           });
 }
@@ -1033,8 +1114,8 @@ ChatPage::createRoom(const mtx::requests::CreateRoom &req)
                           return;
                   }
 
-                  emit showNotification(QString("Room %1 created")
-                                          .arg(QString::fromStdString(res.room_id.to_string())));
+                  emit showNotification(
+                    tr("Room %1 created").arg(QString::fromStdString(res.room_id.to_string())));
           });
 }
 
diff --git a/src/TextInputWidget.cpp b/src/TextInputWidget.cpp
index b6b519801eafcf6c7ca0f513b76ae4d8e45cd884..52686c0f697c29b08c7830b95e4764266af36042 100644
--- a/src/TextInputWidget.cpp
+++ b/src/TextInputWidget.cpp
@@ -605,6 +605,14 @@ TextInputWidget::command(QString command, QString args)
                 sendEmoteMessage(args, input_->related);
         } else if (command == "join") {
                 sendJoinRoomRequest(args);
+        } else if (command == "invite") {
+                sendInviteRoomRequest(args.section(' ', 0, 0), args.section(' ', 1, -1));
+        } else if (command == "kick") {
+                sendKickRoomRequest(args.section(' ', 0, 0), args.section(' ', 1, -1));
+        } else if (command == "ban") {
+                sendBanRoomRequest(args.section(' ', 0, 0), args.section(' ', 1, -1));
+        } else if (command == "unban") {
+                sendUnbanRoomRequest(args.section(' ', 0, 0), args.section(' ', 1, -1));
         } else if (command == "shrug") {
                 sendTextMessage("¯\\_(ツ)_/¯", input_->related);
         } else if (command == "fliptable") {
diff --git a/src/TextInputWidget.h b/src/TextInputWidget.h
index 6641d97cb78c1ea58363b5907ddd5fbf3828b3ab..4bdb2509f6e7ca5ec6ac85d3c7ff8073ba276a74 100644
--- a/src/TextInputWidget.h
+++ b/src/TextInputWidget.h
@@ -183,6 +183,10 @@ signals:
                          const std::optional<RelatedInfo> &related);
 
         void sendJoinRoomRequest(const QString &room);
+        void sendInviteRoomRequest(const QString &userid, const QString &reason);
+        void sendKickRoomRequest(const QString &userid, const QString &reason);
+        void sendBanRoomRequest(const QString &userid, const QString &reason);
+        void sendUnbanRoomRequest(const QString &userid, const QString &reason);
 
         void startedTyping();
         void stoppedTyping();