diff --git a/mautrix_telegram/commands/telegram/auth.py b/mautrix_telegram/commands/telegram/auth.py index efe34763..815dce98 100644 --- a/mautrix_telegram/commands/telegram/auth.py +++ b/mautrix_telegram/commands/telegram/auth.py @@ -126,41 +126,20 @@ async def login(evt: CommandEvent) -> Optional[Dict]: if evt.config["appservice.public.enabled"]: prefix = evt.config["appservice.public.external"] url = f"{prefix}/login?token={evt.public_website.make_token(evt.sender.mxid, '/login')}" - if allow_matrix_login: - if override_sender: - return await evt.reply( - "This bridge instance allows you to log in inside or outside of Matrix, but " - "logging in as another user is only possible via the web interface.\n\n" - f"Please visit [the login page]({url}) to log in as " - f"[{evt.sender.mxid}](https://matrix.to/#/{evt.sender.mxid}).\n\n") - return await evt.reply( - "This bridge instance allows you to log in inside or outside Matrix.\n\n" - "If you would like to log in within Matrix, please send your phone number or bot " - "auth token here.\n" - "If you would like to log in outside of Matrix, please visit [the login page]" - f"({url}).\n\n" - "Logging in outside of Matrix is recommended if you have two-factor authentication " - "enabled, because in-Matrix login would save your password in the message history." - f"\n\n{nb}") if override_sender: - return await evt.reply( - "This bridge instance does not allow logging in inside Matrix, and logging in as " - "another user inside Matrix isn't possible anyway.\n\n" - f"Please visit [the login page]({url}) to log in as " - f"[{evt.sender.mxid}](https://matrix.to/#/{evt.sender.mxid}).") - return await evt.reply( - "This bridge instance does not allow logging in inside Matrix.\n\n" - f"Please visit [the login page]({url}) to log in.\n\n" - f"{nb}") + return await evt.reply(f"[Click here to log in]({url}) as " + f"[{evt.sender.mxid}](https://matrix.to/#/{evt.sender.mxid}).") + elif allow_matrix_login: + return await evt.reply(f"[Click here to log in]({url}). Alternatively, send your phone" + f" number (or bot auth token) here to log in.\n\n{nb}") + return await evt.reply(f"[Click here to log in]({url}).\n\n{nb}") elif allow_matrix_login: if override_sender: return await evt.reply( "This bridge instance does not allow you to log in outside of Matrix. " "Logging in as another user inside Matrix is not currently possible.") - return await evt.reply( - "This bridge instance does not allow you to log in outside of Matrix.\n\n" - "Please send your phone number or bot auth token here to start the login process.\n\n" - f"{nb}") + return await evt.reply("Please send your phone number (or bot auth token) here to start " + f"the login process.\n\n{nb}") return await evt.reply("This bridge instance has been configured to not allow logging in.") diff --git a/mautrix_telegram/matrix.py b/mautrix_telegram/matrix.py index 1830416d..dab864da 100644 --- a/mautrix_telegram/matrix.py +++ b/mautrix_telegram/matrix.py @@ -136,12 +136,31 @@ class MatrixHandler: if not inviter.whitelisted: await self.az.intent.send_notice( - room_id, text="", - html="You are not whitelisted to use this bridge.

" + room_id, + text="You are not whitelisted to use this bridge.\n\n" "If you are the owner of this bridge, see the " - "bridge.permissions section in your config file.") + "`bridge.permissions` section in your config file.", + html="

You are not whitelisted to use this bridge.

" + "

If you are the owner of this bridge, see the " + "bridge.permissions section in your config file.

") await self.az.intent.leave_room(room_id) + try: + is_management = len(await self.az.intent.get_room_members(room_id)) == 2 + except MatrixRequestError: + is_management = False + cmd_prefix = self.commands.command_prefix + text = html = "Hello, I'm a Telegram bridge bot. " + if is_management and inviter.puppet_whitelisted and not await inviter.is_logged_in(): + text += f"Use `{cmd_prefix} help` for help or `{cmd_prefix} login` to log in." + html += (f"Use {cmd_prefix} help for help" + f" or {cmd_prefix} login to log in.") + pass + else: + text += f"Use `{cmd_prefix} help` for help." + html += f"Use {cmd_prefix} help for help." + await self.az.intent.send_notice(room_id, text=text, html=html) + async def handle_invite(self, room_id: MatrixRoomID, user_id: MatrixUserID, inviter_mxid: MatrixUserID) -> None: self.log.debug(f"{inviter_mxid} invited {user_id} to {room_id}") diff --git a/mautrix_telegram/web/common/auth_api.py b/mautrix_telegram/web/common/auth_api.py index 4fc6dbcc..ccb4e53c 100644 --- a/mautrix_telegram/web/common/auth_api.py +++ b/mautrix_telegram/web/common/auth_api.py @@ -79,7 +79,8 @@ class AuthAPI(abc.ABC): try: await user.client.sign_in(phone.strip()) return self.get_login_response(mxid=user.mxid, state="code", status=200, - message="Code requested successfully.") + message="Code requested successfully. Check your SMS " + "or Telegram client and enter the code below.") except PhoneNumberInvalidError: return self.get_login_response(mxid=user.mxid, state="request", status=400, errcode="phone_number_invalid", diff --git a/mautrix_telegram/web/public/login.html.mako b/mautrix_telegram/web/public/login.html.mako index 12c9bc63..1afec769 100644 --- a/mautrix_telegram/web/public/login.html.mako +++ b/mautrix_telegram/web/public/login.html.mako @@ -95,8 +95,8 @@ along with this program. If not, see . % if state == "request": - - + % elif state == "bot_token":