Add command to change displayname

This commit is contained in:
Tulir Asokan
2019-05-31 01:18:03 +03:00
parent 99ac768778
commit cbfb4d6d32
+21 -2
View File
@@ -17,10 +17,10 @@
from typing import Dict, Optional from typing import Dict, Optional
from telethon.errors import (UsernameInvalidError, UsernameNotModifiedError, UsernameOccupiedError, from telethon.errors import (UsernameInvalidError, UsernameNotModifiedError, UsernameOccupiedError,
HashInvalidError, AuthKeyError) HashInvalidError, AuthKeyError, FirstNameInvalidError)
from telethon.tl.types import Authorization from telethon.tl.types import Authorization
from telethon.tl.functions.account import (UpdateUsernameRequest, GetAuthorizationsRequest, from telethon.tl.functions.account import (UpdateUsernameRequest, GetAuthorizationsRequest,
ResetAuthorizationRequest) ResetAuthorizationRequest, UpdateProfileRequest)
from .. import command_handler, CommandEvent, SECTION_AUTH from .. import command_handler, CommandEvent, SECTION_AUTH
@@ -53,6 +53,25 @@ async def username(evt: CommandEvent) -> Optional[Dict]:
await evt.reply(f"Username changed to {evt.sender.username}") await evt.reply(f"Username changed to {evt.sender.username}")
@command_handler(needs_auth=True, help_section=SECTION_AUTH, help_args="<_new displayname_>",
help_text="Change your Telegram displayname.")
async def displayname(evt: CommandEvent) -> Optional[Dict]:
if len(evt.args) == 0:
return await evt.reply("**Usage:** `$cmdprefix+sp displayname <new displayname>`")
if evt.sender.is_bot:
return await evt.reply("Bots can't set their own displayname.")
first_name, last_name = ((evt.args[0], "")
if len(evt.args) == 1
else (" ".join(evt.args[:-1]), evt.args[-1]))
try:
await evt.sender.client(UpdateProfileRequest(first_name=first_name, last_name=last_name))
except FirstNameInvalidError:
return await evt.reply("Invalid first name")
await evt.sender.update_info()
await evt.reply("Displayname updated")
def _format_session(sess: Authorization) -> str: def _format_session(sess: Authorization) -> str:
return (f"**{sess.app_name} {sess.app_version}** \n" return (f"**{sess.app_name} {sess.app_version}** \n"
f" **Platform:** {sess.device_model} {sess.platform} {sess.system_version} \n" f" **Platform:** {sess.device_model} {sess.platform} {sess.system_version} \n"