Add full_name shortcut for Chat (#929)

Added full_name for Chat
This commit is contained in:
Oleg A 2022-06-26 01:50:27 +03:00 committed by GitHub
parent b8893c0971
commit 70088cdd65
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
3 changed files with 41 additions and 0 deletions

1
CHANGES/929.feature.rst Normal file
View file

@ -0,0 +1 @@
Added `full_name` shortcut for `Chat` object

View file

@ -80,6 +80,21 @@ class Chat(TelegramObject):
shift = int(-1 * pow(10, len(short_id) + 2))
return shift - self.id
@property
def full_name(self) -> str:
"""Get full name of the Chat.
For private chat it is first_name + last_name.
For other chat types it is title.
"""
if self.title is not None:
return self.title
if self.last_name is not None:
return f"{self.first_name} {self.last_name}"
return f"{self.first_name}"
def ban_sender_chat(self, sender_chat_id: int) -> BanChatSenderChat:
from ..methods import BanChatSenderChat

View file

@ -1,3 +1,7 @@
from typing import Optional
from pytest import mark, param
from aiogram.types import Chat
@ -15,3 +19,24 @@ class TestChat:
method = chat.unban_sender_chat(sender_chat_id=-1337)
assert method.chat_id == chat.id
assert method.sender_chat_id == -1337
@mark.parametrize(
"first,last,title,chat_type,result",
[
param("First", None, None, "private", "First", id="private_first_only"),
param("First", "Last", None, "private", "First Last", id="private_with_last"),
param(None, None, "Title", "group", "Title", id="group_with_title"),
param(None, None, "Title", "supergroup", "Title", id="supergroup_with_title"),
param(None, None, "Title", "channel", "Title", id="channel_with_title"),
],
)
def test_full_name(
self,
first: Optional[str],
last: Optional[str],
title: Optional[str],
chat_type: str,
result: str,
):
chat = Chat(id=42, first_name=first, last_name=last, title=title, type=chat_type)
assert chat.full_name == result